您可以使用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