2009-08-20 10 views
0

私は以下の問題があります:データベーステーブルには、売上が記録されています。フィールドの1つは、SQL Server Date型のSaleDateです。ウェブサイトでこのフィールドを検索できるようになりました。そしてそれは年だけを検索することができます。Linq-to-SQLで日付を確認

2008/11/01のレコードが1つあるとします。私が "2008"を検索した場合、そのエントリーが返されますが、これはもちろん正しいです。しかし、 "2008/11/01"を検索してもエントリは返されません。

filteredSales = filteredSales.Where(s => s.SaleDate.ToString().Contains(searchterm)); 

I have also tried this ones: 
filteredSales = filteredSales.Where(s => s.SaleDate.Value.ToString().Contains(searchterm)); 
filteredSales = filteredSales.Where(s => s.SaleDate.Value.ToShortDateString().Contains(searchterm)); 

彼らはまた、動作しません:

は、だからここに私のコードです。

これはドイツ語のアプリケーションであり、検索用語が実際には "01.11.2008"なので、LinQの問題ではないかもしれません。しかし、データベースから値を出力したり、データベースを直接見ると、 "01.11.2008"に表示されます。

ありがとうございました。

try 
{ 
    DateTime sdt = DateTime.Parse(suchbegriff, new System.Globalization.CultureInfo("de-DE")); 
    filteredSales = filteredSales.Where(s => s.SaleDate.Value == sdt); 
} 
catch (FormatException e) 
{ 
    // in case we have only the year try to make a string match 
    filteredSales = filteredSales.Where(s => s.SaleDate.Value.Year.ToString().Equals(suchbegriff)); 
} 

マイケル

答えて

1

ない例えば文字列で、DateTimeオブジェクトを使用して比較を行います。

// Parse the search term string to DateTime, using the german culture 
DateTime date = DateTime.Parse(searchTerm, new CultureInfo("de-DE")); 

var sales = filteredSales.Where(s => s.SaleDate == date); 
1

はあなたが

S => s.SalesDate ==日のようなものを試してみました:

マイケル

ここでは以下の選択回答に基づいて、完全なソリューションです.Parse( "01 November 2008")

または

S => s.SalesDate == Date.Parse(MyDateに該当)

または

S => s.SalesDate.Year

== "2008"

上でテストされていません。特に最後の1つですが、本質的には年または年のどちらかをテストしたいと思っています。

日付フィールドを含むクエリにcontainsを使用するとは思いません。

関連する問題