c# - Entity Framework - 如何使用 lambda 通过一个查询选择每个 IDNumber 的第一行

标签 c# asp.net-mvc entity-framework lambda entity-framework-5

我有订单表,其中 IdNumber 是用户的 ID,我需要获取每个用户的最后一个订单(InsuranceDate 是日期)。

问题是如果一个用户可以有多个订单,如何获取最后一个订单。如何在实体查询后使用一个查询而不需要大量的 foreach 来完成此操作?

public class Order
{
    [Key]
    public int OrderID { get; set; }        
    public string IdNumber { get; set; }
    public int Price { get; set; }
    public Datetime InsuranceDate { get; set; }
}

最佳答案

尝试使用此解决方案:

  var r = db.Orders.GroupBy(o => o.IdNumber).Select(g => g.OrderByDescending(o => o.InsuranceDate).FirstOrDefault());

首先,您需要按用户 ID 对订单进行分组。然后,按降序对每个组进行排序,并仅选择第一个。这样您就可以获得每个用户的最后订单。

关于c# - Entity Framework - 如何使用 lambda 通过一个查询选择每个 IDNumber 的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464637/

相关文章:

asp.net-mvc - 带有 Dotnetopenauth 的自定义配置文件提供程序新的 MVC 4 模板

c# - EF 5 更新超时;可能是由于死锁

c# - 为什么 ef 中的身份号码会跳到一个大数字?

C# MS Project Interop - 获取资源的工作时间

c# - 比较两位小数

c# - 文本框自动完成字符串集合建议

c# - 以 PointF 为圆心绘制圆 c#

asp.net-mvc - 如何在 ASP.NET MVC 中动态调整图像大小?

javascript - 更改 Umbraco 7 网站名称

entity-framework - 性能:LinqPad和 Entity Framework 为同一Linq请求生成不同的SQL