实体框架-选择按属性排序的单个记录

本文关键字:排序 单个 记录 属性 框架 选择 实体 | 更新日期: 2023-09-27 17:54:15

我有一个表,表的属性之一是TotalDue。我希望首先按TotalDue排序,然后选择"top"记录,在这种情况下,该记录将是具有最高值的记录。

    homeVM.LastSaleAmount  = (from i in salesService.GetSalesOrderHeaders()
                                  .OrderByDescending(a => a.TotalDue).First();

这是我到目前为止所尝试的,但我认为.First()需要一个参数,我认为我也需要一个选择,但不是很确定。

实体框架-选择按属性排序的单个记录

您可以尝试使用Take方法,就像top一样,但在Linq世界中

homeVM.LastSaleAmount = salesService.GetSalesOrderHeaders().OrderByDescending(a => a.TotalDue).Take(1);
https://msdn.microsoft.com/en-us/library/vstudio/bb503062%28v=vs.100%29.aspx

您混合了方法语法和查询语法,而查询语法的使用是不必要的,这使得这变得更加困难。把它删掉:

homeVM.LastSaleAmount = salesService.GetSalesOrderHeaders()
    .OrderByDescending(a => a.TotalDue)
    .Select(a => a.TotalDue)
    .First();

您正在尝试将整个实体放入LastSaleAmount。使用.Select(a => a.TotalDue):

homeVM.LastSaleAmount  = salesService.GetSalesOrderHeaders()
                              .OrderByDescending(a => a.TotalDue).Select(a => a.TotalDue).First();