2014-03-01 104 views
4

我的人List<person>如何排序字符串列表?

public class Person 
{ 
    public string Age { get; set; } 
} 

他們的年齡sorrily是stringint型INFACT,並具備"45", "70", "1" etc.值的列表。我如何將列表從舊到舊排序?

致電people.Sort(x => x.Age);沒有給出想要的結果。謝謝。

+2

* *期望的結果是什麼? –

+2

正如我所說的從舊到新排序:) – user3293835

回答

6

您可以將每個字符串轉換爲int,然後命令他們,從最大到最小:

var oldestToYoungest = persons.OrderByDescending(x => Int32.Parse(x.Age)); 

這應該給你想要的結果(假設爲「7」,「22」的時代,而「105」 ):

105 
22 
7 

如果將它們排序爲字符串,您將無法獲得所需的結果,因爲您發現了這些結果。您最終將列出按字母順序排列的列表,例如:

"7" 
"22" 
"105" 
+0

謝謝@GrantWinney – user3293835

6

這應該工作(假定peopleList<Person>):

people = people.OrderByDescending(x => int.Parse(x.Age)).ToList(); 

如果你不希望創建一個新的List,或者你可以實現IComparable<T>爲你的類:

public class Person : IComparable<Person> 
{ 
    public string Age { get; set; } 

    public int CompareTo(Person other) 
    { 
     return int.Parse(other.Age).CompareTo(int.Parse(this.Age)); 
    } 
} 

然後您只需要使用Sort方法:

people.Sort();