2013-02-02 186 views
1

什麼是最符合要求的結果的最有效途徑?我正在使用ASP.NET 4.5和C#。按重複/重複項目計數返回唯一列表

讓說我有以下int列表:

5,7,2,7,8,5,8,0,2,9,8,8,7

我想每個項目的出現次數,以從列表中刪除,並責令重複。我知道我可以使用LINQ的Distinct()來使這些項目獨一無二,但是我怎樣才能讓它通過出現次數來排序呢?這是上面的例子所期望的結果:

8,7,5,2,0,9

+0

爲什麼這個downvote? – Ricketts

+1

我沒有倒下,但我猜那個低估了你的問題的人是因爲缺乏你的努力。 –

+0

我付出了很多努力,我不認爲有必要展示我的荒謬循環來找出訂單,因爲我知道這是錯誤的。 – Ricketts

回答

1
var ordered = list 
    .GroupBy(x => x) 
    .OrderByDescending(g => g.Count()) 
    .Select(g => g.Key); 
+0

標記了您的答案,因爲這是第一個答案。由於我正在處理List對象,所以最後應該有一個「.ToList()」。除此之外,你和Darin的工作都很棒! – Ricketts

4

你可以組項目,然後通過計數各組命令他們:

var items = new[] { 5, 7, 2, 7, 8, 5, 8, 0, 2, 9, 8, 8, 7 }; 
var result = items 
    .GroupBy(x => x) 
    .OrderByDescending(x => x.Count()) 
    .Select(x => x.Key); 
+0

爲什麼最後的區別需要? –

+0

這不是必需的。 GroupBy已經擺脫了重複的條目。 – Artless

+0

正確,根本不需要。這是一個糟糕的複製粘貼在我身邊。感謝您指出了這一點。 –