C#对List的元素按属性排序

时间:2022-06-01 16:52:22

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());