C#对List的元素按属性排序
C#对List元素排序有几种方法。
方法一、使用Linq
List<User> sortedList = list.OrderBy(o=>o.ID).ToList();如果按降序排序,可以使用OrderByDescending方法:
List<User> sortedList = list.OrderByDescending(o=>o.ID).ToList();方法二、扩展IComparable接口
示例:
public class User : IComparable<User>
{
    public string ID;
    public string Name;
    public int CompareTo(User other) 
    {
        if (null == other)
            return 1;
        return string.Compare(this.Id, other.Id);
    }
}定义好类后,使用List排序如下:
List<User> myList = ...
myList.Sort();如果是除了按Id排序,还有按其他属性排序的需求,可以实现IComparer接口:
public sealed class UserByNameComparer : IComparer<User> 
{
    public int Compare(User x, User y) 
    {
        if (object.ReferenceEquals(x, y))
            return 0;
        else if (null == x)
            return -1;
        else if (null == y)
            return 1;
        else
            return string.Compare(x.Name, y.Name);
    }
}使用:
List<User> myList = ...
myList.Sort(new UserByNameComparer()); 
             
             
             
             
            