2012-05-23 68 views
2

此代码打破我认为,因为有时间在SubmittedDt和DateTimeToday。我该如何解决这个问题,只是按日期而不是时间来过滤。比较日期没有时间Lambda

DailyOrder todaysOrderNotReset = dailyOrders.Where(x => x.SubmittedDt == DateTime.Today && x.IsResetDone == false).First(); 

回答

7
x.SubmittedDt 

应该

x.SubmittedDt.Date 

...虽然你并不真的需要Where因为第一(或FirstOrDefault)应该处理你想要什么。

dailyOrders.First(x => x.SubmittedDt.Date == DateTime.Today && x.IsResetDone == false); 
+0

...以及'DateTime.Today.Date'。 – BeemerGuy

+0

'DateTime.Today.Date'是不必要的,因为'Today'已经没有时间了。 –

+0

哦....你是对的;我刚刚尝试过,从未给过它一个想法。 – BeemerGuy

2

试试这个

DailyOrder todaysOrderNotReset = dailyOrders.Where(x => x.SubmittedDt.Date == DateTime.Today && x.IsResetDone == false).First(); 
0
DateTime today = DateTime.Today; 
DailyOrder todaysOrderNotReset = dailyOrders.First(x => 
    x.SubmittedDt.Date == today && x.IsResetDone == false); 

当比较当前日期/时间对项目的集合,你最好先阅读当前日期/时间到一个局部变量,然后用为您的比较提供一致的价值。否则,在执行过程中出现一个小的风险,即现在的日期/时间会发生变化,并产生意想不到的结果。