2017-01-12 15 views
-1

SO。 我有一個2k +名稱記錄的列表。我想在我的列表中找到前三名頻繁重複的名字。到目前爲止,我想通了,如何讓First()一個具有以下內容:如何遍歷2000條記錄列表並挑選三條最常見的重複記錄?

var mostPopular = likes.GroupBy(i => i.name).OrderByDescending(grp => grp.Count()).Select(grp => grp.Key).First(); 

我怎樣才能得到另外兩個?請幫助。

+0

使用'Take(3)'而不是'First'。它將返回'IEnumerable >',使用'SelectMany'將其平鋪爲一個集合。 – MarcinJuraszek

回答

6

您可以使用Take函數。

var mostPopular = likes.GroupBy(i => i.name) 
.OrderByDescending(grp => grp.Count()) 
.Select(grp => grp.Key) 
.Take(3); 
+0

那我該如何使用這個變量呢?是否像'string name1 = mostpopular.First()' –

+1

你可以這樣做,或者使用循環或使用.Skip函數來獲得第二和第三。 mostPopular.Skip(1)。首先(); //獲得第二個並使用.Skip(2).First()獲取第三個項目。 – NoSaidTheCompiler

相關問題