假设我将模型定义为:Foo {Id, Date}
。
有没有办法制作一个布尔值的lambda表达式,这样我才能得到最新日期的Foo?类似于(f => f.Date IsLatest)
?
答案 0 :(得分:20)
var latest = model.OrderByDescending(m => m.Date).FirstOrDefault();
答案 1 :(得分:3)
鉴于您没有提供有关实体名称的任何信息(我假设foos
在这里);像这样的东西:
var latest = foos.OrderByDescending(f => f.Date).FirstOrDefault();
如果有多个的最大日期(我知道你说的是'最新的Foo ......'但我不知道你的时间的分辨率)你真的会更喜欢Guffa的答案。
请注意,任何一种解决方案都会从日期列的索引中大量受益。如果没有索引并且表变大了?然后它可能会很慢。
答案 2 :(得分:2)
要制作一个确定日期是否为最新日期的表达式,您需要知道最新日期,即:
DateTime latestDate = items.Max(f => f.Date);
var latestItems = items.Where(f => f.Date == latestDate);
另一种方法是对项目进行排序:
var latestItem = items.OrderBy(f => f.Date).First();
或使用Aggregate:
var latestItem = items.Aggregate((d, v) => v.Date > d.Date ? v : d);
答案 3 :(得分:0)
试试这个:
DateTime maxDate = FooCollection.Max(f=>f.Date)
答案 4 :(得分:0)
您可以尝试以下代码:
List<Foo> fooList = new List<Foo>();
// add the Foo instance in list here
// then apply following to take latest
fooList.OrderByDescending(p => p.Date).Take(1);