下一个和上一个日期的c#Lambda表达式
我有以下数据库表“Date”:下一个和上一个日期的c#Lambda表达式,c#,asp.net-mvc-3,lambda,C#,Asp.net Mvc 3,Lambda,我有以下数据库表“Date”: DateId Date 1 08/05/2012 2 08/01/2012 3 08/25/2012 4 08/15/2012 5 08/22/2012 ..... 要获取最近日期,我使用以下表达式: var recentDate = db.Date.OrderByDescending(d => d.Date).FirstOrDefault(); 如何使用lambda表达式使用re
DateId Date
1 08/05/2012
2 08/01/2012
3 08/25/2012
4 08/15/2012
5 08/22/2012
.....
要获取最近日期,我使用以下表达式:
var recentDate = db.Date.OrderByDescending(d => d.Date).FirstOrDefault();
如何使用lambda表达式使用recentDate获取上一个日期或下一个日期
当我尝试使用latestDate时,会出现一个错误,错误是:
operator > cannot be applied to operands of type 'System.DateTime' and 'App.Models.Date
这就是我在前一天尝试的:
var previous date = top10Date.Where(d => d.Date > latestDate).OrderBy(d => d.Date).FirstOrDefault();
上面的表达对吗?我怎样才能做到这一点 您正在尝试将DateTime与App.Models.Date进行比较,编译器不知道如何进行比较 您可能正在尝试执行以下操作:
var previous date = top10Date.Where(d => d.Date > latestDate.Date).OrderBy(d => d.Date).FirstOrDefault();
您的recentDate不是DateTime,它是整个日期对象。。。只需选择日期部分,您将带回更少的数据
var recentDate = db.Date.OrderByDescending(d => d.Date).Select(d => d.Date).FirstOrDefault();
这对我来说很好,除了您可能需要使用降序排序之外,latestDate的类型为App.Models.Date,而App.Models.Date.Date的类型为DateTime,这是OP试图比较的类型。若要获取
recentDate
,请不要排序,因为它是O(n*Log(n))操作。只需使用db.Date.Max(d=>d.Date)
即可在O(n)
时间内完成