假设我有一个模型定义为:Foo {Id, Date}
。
有没有办法制作一个布尔 lambda 表达式,以便我可以获得最新日期的 Foo ?类似的东西(f => f.Date IsLatest)
?
假设我有一个模型定义为:Foo {Id, Date}
。
有没有办法制作一个布尔 lambda 表达式,以便我可以获得最新日期的 Foo ?类似的东西(f => f.Date IsLatest)
?
var latest = model.OrderByDescending(m => m.Date).FirstOrDefault();
要制作一个确定日期是否为最新日期的表达式,您需要知道最新日期,即:
DateTime latestDate = items.Max(f => f.Date);
var latestItems = items.Where(f => f.Date == latestDate);
另一种方法是对项目进行排序:
var latestItem = items.OrderBy(f => f.Date).First();
或使用聚合:
var latestItem = items.Aggregate((d, v) => v.Date > d.Date ? v : d);
鉴于您没有提供有关实体名称的任何信息(我在foos
这里假设);像这样的东西:
var latest = foos.OrderByDescending(f => f.Date).FirstOrDefault();
如果有超过一个的最大日期(我知道你说 'Foo 有最新的......'但我不知道你在这里的时间分辨率),那么你实际上会追求更像 Guffa 的东西回答。
请注意,任一解决方案都将从日期列上的索引中受益匪浅。如果没有索引并且表变大了?那么它可能会很慢。
试试这个:
DateTime maxDate = FooCollection.Max(f=>f.Date)
您可以尝试以下代码:
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);