2015-02-23 164 views
-2

假設我有一個Person對象的集合,並且每個人都有一個頭發顏色屬性(值爲:Blonde,Black,Brown,Red,White)。LINQ:通過組計數收集訂單

我該如何使用LINQ根據它們的組數(按降序)重新排序這些Person對象?

例子:

鮑勃(棕色),傑克(金色),馬克(布朗),比爾(白色),喬治(布朗),吉姆(金色),托馬斯(紅色)

應重新排序到:

鮑勃(布朗),馬克(布朗),喬治(棕色),傑克(金色),吉姆(金色),比爾(白色),托馬斯(紅色)

與我們一樣,性能是一個關鍵問題所以最少的代碼行會更可取。

+6

重點外賣:代碼行==性能。 – 2015-02-23 14:41:56

+0

究竟你的問題是什麼?你有什麼嘗試? – Dirk 2015-02-23 14:43:04

+0

我很困惑,不應該在第二次聽到法案之前托馬斯應該在聽嗎? – oqx 2015-02-23 14:47:03

回答

1

也許這個作品:

List<Person> persons = 
    new List<Person>() { 
    new Person("Bob", "Brown"), 
    new Person("Jack", "Blonde"), 
    new Person("Mark", "Brown"), 
    new Person("Bill", "White"), 
    new Person("George", "Brown"), 
    new Person("Jim", "Blonde"), 
    new Person("Thomas", "Red") 
}; 

foreach (var a in persons.GroupBy(p => p.HairColor).OrderByDescending(g => g.Count()).SelectMany(g => g)) { 
    Console.WriteLine(a); 
} 

哪裏..​​.

public class Person { 
    public Person(string name, string hairColor) { 
     Name = name; 
     HairColor = hairColor; 
    } 
    public string Name { get; set; } 
    public string HairColor { get; set; } 

    public override string ToString() { 
     return Name + " (" + HairColor + ")"; 
    } 
} 
+0

完美的玉米片....謝謝! – ZiggY 2015-02-24 08:56:15