使用实体框架 6 返回具有最大列值的记录

Ale*_*ich 7 .net c# sql linq entity-framework-6

尝试获取列的最大日期时间值的记录ReceivedDateTime,但是数据集应该由某些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)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更漂亮、更简单、更短的实现、符号?谢谢!

OmG*_*OmG 9

您可以使用如下简化OrderByDescending

using (var db = new SystemEntities())
{
    var record = db.Table.Where(p => p.Id == Id).OrderByDescending(x => x.ReceivedDateTime).FirstOrDefault();
    if(record != null){}
}
Run Code Online (Sandbox Code Playgroud)