8

DateTimeパラメーターを持つオブジェクトのリストがあります。

LINQを使用してこのリストをクエリし、日付でエントリを返しますが、時間の部分は無視します

したがって、2012年8月10日にいつでも発生するエントリを選択したいと思います。

4

4 に答える 4

8

このスニペットは、メモリ内クエリに使用できます。

var theDate = new DateTime(2012, 08, 10);
var entriesOnTheDate = list.Where(item => item.DateTimeField.Date.Equals(theDate));

SQL Serverデータソースに対してクエリを実行する場合は、を使用SqlFunctions.DatePartして日、月、年を抽出し、それらを個別に比較できます。

var entriesOnTheDate = dbContext
    .EntriesWithDateTimeField
    .Where(item => SqlFunctions.DatePart("Year", item.DateTimeField) == 2012
                && SqlFunctions.DatePart("Month", item.DateTimeField) == 8
                && SqlFunctions.DatePart("Day", item.DateTimeField) == 12);
于 2012-08-14T14:42:34.380 に答える
2
 entries.Where( e => e.Property.Date == new DateTime( 2012, 08, 10 ) )
于 2012-08-14T14:42:45.240 に答える
2

1日をカバーする時間の範囲を追加できます。

entries.Where(e => e.Property.Date >= new DateTime(2012, 08, 10) 
                   && e.Property.Date < new DateTime(2012, 08, 11));
于 2012-08-14T14:44:48.380 に答える
1

EntityFunctions.TruncateTime(EF 6以降)の使用についてはどうですか

var result = context.Employees
.Where(x => EntityFunctions.TruncateTime(x.LoginDate) ==DateTime.Today)
.FirstOrDefault();

名前空間:System.Data.Objects.EntityFunctions.TruncateTime

于 2015-06-01T12:15:29.237 に答える