我有一个 List<Order>
public class Order
{
public Order()
{
}
public string UserId {get; set;}
}
我希望能够使用LINQ获得以下信息:
UserId
具有最大订单UserId
具有最小订单所以结果应该是这样的:
您可以使用Lookup
:
var userLookup = orderList.ToLookup(o => o.UserId);
int maxOrders = userLookup.Max(x => x.Count());
int minOrders = userLookup.Min(x => x.Count());
int avgOrders = (int)userLookup.Average(x => x.Count());
IEnumerable<string> allUserIDsWithMaxOrders = userLookup
.Where(x => x.Count() == maxOrders)
.Select(g => g.Key);
IEnumerable<string> allUserIDsWithMinOrders = userLookup
.Where(x => x.Count() == minOrders)
.Select(g => g.Key);
IEnumerable<string> allUserIDsWithAvgOrders = userLookup
.Where(x => x.Count() == avgOrders)
.Select(g => g.Key);
但是,我不清楚您要如何获得单个用户的平均订单数,这不总是绝对值吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句