2016-10-13 21 views
0

データベースからレコードを取得しようとしています。StartTimeフィールドを今日の日付にする必要があります。LINQでのみ日付値を比較する方法

service.GetAll().Where(o => o.StartTime. == DateTime.Today.Date).Select(o => new SelectableItem(o.Id, o.TestPurpose, v == o.Id)) 

データベースの日付はこの形式です。

2016-07-01 07:00:00.000 

この形式を今日の日付と比較するにはどうすればいいですか?時刻ではなく日付のみを比較する必要があります。

+4

を使うのか? – techspider

+0

これも 'o.StartTime.'です。 – KSib

+0

また、' DateTime.Today.Date'の '.Date'は冗長です。 –

答えて

0

使用EntityFunctions.TruncateTime時刻部分削除する:あなたは@Renanアラウージョで指定されたアプローチを使用することができます

service.GetAll() 
.Where(o => EntityFunctions.TruncateTime(o.StartTime) == EntityFunctions.TruncateTime(DateTime.Today.Date)) 
.Select(o => new SelectableItem(o.Id, o.TestPurpose, v == o.Id)) 
+0

EnityFunctions.TruncateTImeを使用してSystemNotSupported例外がスローされる – chai

2

を。 それとも別の方法があり、 `o.StartTime.Date == DateTime.Today`を使用するためにあなたを妨げているものを二つの日付を定義し、

.Where(o => o.StartTime >= date1 && o.StartTime < date2) 

どこ

date1 = DateTime.Today.Date;   // (lets say today's date=10-13-2016) 
    date2 = DateTime.Today.AddDays(1).Date; // (tomorrow's date = 10-14-2016) 
+0

@Ian Mercer:誤植を修正し、よりクリーンな方法でそれを提示していただきありがとうございます。 – sam

+0

これは機能しました。ありがとうございました。 – chai

+0

@chai:それはあなたのために働いてうれしい。 – sam

関連する問題