按属性值对对象列表进行排序

时间:2013-05-18 02:34:26

标签: c#

我有一份城市名单。

 List<City> cities;

我想按人口排序。我想象的代码就像:

 cities.Sort(x => x.population);

但这不起作用。我应该如何排序这个清单?

4 个答案:

答案 0 :(得分:45)

使用Linq函数的OrderBy。见http://msdn.microsoft.com/en-us/library/bb534966.aspx

cities.OrderBy(x => x.population);

答案 1 :(得分:17)

使用此功能,这将有效。

List<cities> newList = cities.OrderBy(o=>o.population).ToList();

答案 2 :(得分:2)

作为另一种选择,如果您没有足够的幸运能够使用Linq,您可以使用IComparer或IComparable接口。

这是两个接口上的一篇很好的知识库文章: http://support.microsoft.com/kb/320727

答案 3 :(得分:2)

您可以在没有LINQ的情况下执行此操作。请参阅IComparable接口文档here

cities.Sort((x,y) => x.Population - y.Population)

或者您可以将此比较功能放在City类中,

public class City : IComparable<City> 
{
    public int Population {get;set;}

    public int CompareTo(City other)
    {
        return Population - other.Population;
    }
 ...
}

然后就可以了,

cities.Sort()

它将返回按人口排序的列表。