c#Lsit排序

list的自带排序方法

List.Sort()只能对系统自带变量进行排序

Sort(IComparer<T> comparer)

是要实现IComparer的继承及接口CompareTo方法的实现

复制代码
class Item : IComparable<Item>
{
    public int money;

    public Item(int money)
    {
        this.money = money;
    }

    public int CompareTo(Item other)
    {

        if( this.money > other.money )
        {
            return -1;
        }
        else
        {
            return 1;
        }
    }
}

返回值的含义

小于0:

放在传入对象的前面

等于0:

保持当前的位置不变

大于0:

放在传入对象的后面

可以简单理解 传入对象的位置 就是0

如果你的返回为负数 就放在它的左边 也就前面

如果你返回正数 就放在它的右边 也就是后面

Sort(Comparison<T> comparison)

传入一个符合 Comparison<T> 委托的方法/匿名函数/Lambda

复制代码
 class ShopItem
 {
     public int id;

     public ShopItem(int id)
     {
         this.id = id;
     }
 }
 List<ShopItem> shopItems = new List<ShopItem>();
 shopItems.Add(new ShopItem(2));
 shopItems.Add(new ShopItem(1));
 shopItems.Add(new ShopItem(4));


shopItems.Sort(delegate (ShopItem a, ShopItem b)
{
    if (a.id > b.id)
    {
        return -1;
    }
    else
    {
        return 1;
    }
});

shopItems.Sort((a, b) =>{ return a.id > b.id ? 1 : -1;});


shopItems.Sort(SortShopItem);
static int SortShopItem( ShopItem a, ShopItem b )
{
    if (a.id > b.id)
    {
        return -1;
    }
    else
    {
        return 1;
    }
}
相关推荐
hard_coding_wang2 小时前
了解一个Excel批量替换的公式用法:REDUCE + LAMBDA 实现循环替换
开发语言·c#·excel
reasonsummer2 小时前
【教学类-134-01】20260414 Python制作童话故事音频
开发语言·python
文慧的科技江湖2 小时前
光伏储能充电系统PRD功能列表 - 慧知开源充电桩平台
开发语言·开源·netty·慧知开源充电桩平台·开源充电桩平台
秋月的私语2 小时前
遥感影像拼接线优化工具:基于Qt+GDAL+OpenCV的从一到二实践
开发语言·qt·opencv
雾岛听蓝2 小时前
Qt操作指南:信号与槽机制
开发语言·数据库·qt
郝学胜-神的一滴2 小时前
Python 多线程编程从入门到精通:原理+实战+最佳实践
开发语言·网络·python·pycharm
feng_you_ying_li2 小时前
C++11,lambda,包装器
开发语言·数据结构·c++
sycmancia2 小时前
Qt——布局管理区(二)
开发语言·前端·qt
傻啦嘿哟2 小时前
Python 操作 Word 页眉页脚完整指南
开发语言·c#