您可以使用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);
但是,我不清楚你如何获得单个用户的平均订单数量,是不是绝对值?
最小值,最大值和平均值是什么?你有唯一的数据是一个字符串,你不能平均字符串。 (LINQ有很多很棒的教程:你学习LINQ的过程是什么?[SO]不是教程。) – Richard 2014-11-21 08:41:24
订单的最小值,最大值和平均值... – 2014-11-21 08:42:39
对,但是'Order'你会喜欢Max,Min和Average吗?你已经尝试了什么?为什么它不适合你?如上所述,Stack Overflow不是教程网站。 – Vincent 2014-11-21 08:44:24