我有订单表,其中 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/