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;
    }
}
相关推荐
掉进电商坑三年没爬出来的东叔24 分钟前
青龙面板进阶:一个面板聚合多平台签到,所有积分自动领
java·开发语言
iCxhust36 分钟前
51单片机电力载波应用开发(七)广播通讯
c语言·开发语言·单片机·嵌入式硬件·51单片机
殷色玫瑰1 小时前
C++ STL:stack、queue、priority_queue 与容器适配器详解
java·开发语言·数据结构·c++·算法·visualstudio
IT方大同1 小时前
java输入输出+方法
java·开发语言·python
滕州市燕猫虎计算机科技工作室个体工商户1 小时前
《Rust程序设计》学习笔记一
开发语言·rust·学习笔记·rust程序设计
samble2 小时前
从零搭建灌装监控系统(十三):报警系统设计,生命周期与通知
c#·wpf·mvvm·modbus·工业控制
Wang's Blog2 小时前
Java框架 SpringCloud 快速入门: 服务拆分之服务远程调用
java·开发语言·spring cloud
努力努力再努力wz2 小时前
【CUDA入门系列】CUDA编程实战:设备选择、显存管理、Kernel、Stream 与 Event 全流程梳理
开发语言·c++
杨丰玮4182 小时前
C语言核心语法
java·c语言·开发语言·学习方法
ttwuai2 小时前
Go开源后台管理系统推荐:README、源码和License应该怎么验
开发语言·golang·开源