2014-08-30 23 views
0

在列表中的最大子組, 100個項目的整數值爲IntValue,我可以很容易地按這些值進行分組。
var groupby = list.GroupBy(i => i.IntValue);列表中的最大子組,但是確定性的

什麼是最好的LINQ的方式來找到現在groupby變量最大的羣體?

它必須是確定性的,所以當列表中有兩個最大的組具有相同數量的項目時,我想選擇最低值IntValue

+0

[其實](HTTP://www.xkcd。 com/1318 /),你想要的是一個額外的排序標準,而不是「決定論」。 – Groo 2014-08-30 07:36:53

+0

確實。但就我而言,它的目的是使選擇具有確定性。否則,不需要額外的標準,也不會使選擇更好。 – Gerard 2014-08-30 07:47:54

回答

2

只是做了一些排序和佔據第一位:

var group = groupby.OrderByDescending(g => g.Count()) 
        .ThenBy(g => g.Key) 
        .First(); 

你可以達到同樣使用基於語法的查詢:

var group = (from g in groupby 
      order g by g.Count() descending, g.Key 
      select g).First(); 
+0

不知道'ThenBy'子句。 – Gerard 2014-08-30 07:13:37

+0

您可以使用基於語法的查詢獲得相同的結果,編譯器會找出要調用的方法。我已經更新了我的答案。 – MarcinJuraszek 2014-08-30 07:15:53