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

// 直接 CompareTo

public class BoardPosInfoSort : IComparer<BoardPosInfo> // PickerIDPick 升序
{
    public int Compare(BoardPosInfo x, BoardPosInfo y)
    {
        return x.PickerIDPick.CompareTo(y.PickerIDPick);
    }
}




转载:https://devnote.pro/books/10000001801239/c/10000041331239

posted @   double64  阅读(701)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2021-06-15 编码器信号输入的理解
点击右上角即可分享
微信分享提示