2014-03-01 65 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();