下一个和上一个日期的c#Lambda表达式

下一个和上一个日期的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

我有以下数据库表“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表达式使用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)
时间内完成