如何获得其值最大的记录

时间:2011-03-23 16:08:04

标签: c# linq entity-framework

我有一个表包含一个Date数据类型的列。我想得到其日期值最大的记录。

Linq支持Max,但它返回值本身。我想要它的值最大的记录。

任何帮助!

4 个答案:

答案 0 :(得分:6)

假设Records是您的对象的集合,而获取最大值的列/属性称为value

var q = Records.OrderByDescending(p => p.value)
               .FirstOrDefault();

答案 1 :(得分:2)

您可以按日期订购该集合并选择第一个:

List<Record> records = new List<Record>();
records.OrderByDescending(record => record.Date).First();

当集合为空(返回FirstOrDefault())时,您可以使用null不抛出异常

答案 2 :(得分:1)

不幸的是,LINQ没有MaxBy运算符。您可能需要按适当的属性对项目进行降序排序,然后取第一个值:

Customer lastRegistered = db.Customers.OrderByDescending(x => x.RegistrationDate)
                                      .FirstOrDefault();

希望SQL Server可以在没有真正进行完整排序的情况下解决如何做到这一点:)

在LINQ to Objects中,编写MaxBy方法当然相对容易 - 例如我已经在MoreLINQ中使用了。

答案 3 :(得分:0)

假设“record”是指来自底层数据库中的表的记录,该表可以有效地处理生成的SQL(并支持最大聚合):

var q = 
    from t in thetable where t.Date == thetable.Max( d => d.Date ) select t;

这将找到与最大日期匹配的记录。 First()可以用来抓住一个。