尝试为ReceivedDateTime
列获取具有max***datetime***值的记录,但数据集应通过某个Id
列(不唯一)进行预筛选。解决方法如下:
using (var db = new SystemEntities())
{
var records = db.Table.Where(p => p.Id == Id);
var record = records.Where(p => p.ReceivedDateTime == records.Max(r => r.ReceivedDateTime)).FirstOrDefault();
if(record != null)
{
}
}
有没有更漂亮、更简单、更短的实现、表示法?谢谢!
2条答案
按热度按时间sirbozc51#
可以使用
OrderByDescending
进行如下简化:agxfikkp2#
在我打开问题和尝试结果之间,原来的答案已经被修复。我很抱歉在我发布之前没有检查。
既然我不能发表评论,我会在旁边贴一个答案。
上面建议的
var record = db.Table.Where(p => p.Id == Id).Max(x => x.ReceivedDateTime).FirstOrDefault()
将不会编译,因为Max将为您返回一个日期时间。您可以像在SQL语句中那样使用OrderByDescending来执行此操作