2013-07-26 18 views
2

我有下面的代碼填寫清單。使用Linq在很多條件下訂購清單

List<Person> people = new List<Person>(); 
for (int i = 1; i <= 30; i++) 
{ 
    var p = new Person(); 
    if (i <= 10) p.Group = "A"; 
    else if (i <= 20) p.Group = "B"; 
    else p.Group = "C"; 
    p.Name = "Person " + i; 
    if (i % 3 == 0) 
     p.Age = 10; 
    else 
     p.Age = 20; 
    people.Add(p); 
} 

現在我想在下面的順序排序做的:所有的人都必須先有「B」組的,必須按年​​齡符合規定。然後剩下的人必須按年齡排序,小組不必按順序排列。這裏是例子:

Name Group Age 
Person B  10 
Person B  10 
..... 
Person B  20 
Person B  20 
Person B  20 
..... 
//From here Group doesn't have to be in order. 
Person A  10 
Person A  10 
..... 
Person C  10 
Person C  10 
..... 
Person A  20 
Person A  20 
Person A  20 
..... 
Person C  20 
Person C  20 
Person C  20 
.... 

我可以用一個linq查詢來做到這一點嗎?

感謝您的幫助!

+0

是一個問題,其餘的團體將被命令? – Blau

+0

@Blau不,這不是問題。我只是需要按年齡排序的其他人。 – Dilshod

回答

12

您可以使用OrderBy訂購B第一,伎倆在這裏falsetrue之前總是。那麼你可以通過訂購Age

var result = list.OrderBy(p => p.Group != "B") 
        .ThenBy(p => p.Age); 
+1

該死的,打我吧。 +1。 –

+1

+1。優秀。您可以通過提供解釋原因的解釋來改善您的答案。 –

+2

+1非常不錯的趕上 –