Entity Framework - 如何通过一个查询使用 lambda select 第一行每个 IDNumber
Entity Framework - how to select first row each IDNumber by one query Using lambda
我有订单 table,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 result = Orders.OrderByDescending(o => o.InsuranceDate).FirstOrDefault(x => x.IdNumber == userID);
其中 userID 是您要匹配的用户 ID。
试试这个解决方案:
var r = db.Orders.GroupBy(o => o.IdNumber).Select(g => g.OrderByDescending(o => o.InsuranceDate).FirstOrDefault());
首先,您需要按用户 ID 对订单进行分组。然后,按降序对每个组进行排序,select 仅排在第一个。这样你会得到每个用户的最后一个订单。
我有订单 table,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 result = Orders.OrderByDescending(o => o.InsuranceDate).FirstOrDefault(x => x.IdNumber == userID);
其中 userID 是您要匹配的用户 ID。
试试这个解决方案:
var r = db.Orders.GroupBy(o => o.IdNumber).Select(g => g.OrderByDescending(o => o.InsuranceDate).FirstOrDefault());
首先,您需要按用户 ID 对订单进行分组。然后,按降序对每个组进行排序,select 仅排在第一个。这样你会得到每个用户的最后一个订单。