【C#】List排序

list是封装好的一个类,本质上是可自动扩容的泛型数组。

List自带的排序。像int,short,long…都可以直接使用list.Sort()进行排序。

实例

List<int> ints = new List<int>();
ints.Add(10);
ints.Add(2);
ints.Add(7);
ints.Add(5);
ints.Sort();
for(int i = 0; i < ints.Count; i++)
{
    Console.WriteLine(ints[i]);
}

类自定义排序

  1. 继承IComparable接口,并实现其中的升序或降序方法。
class Item:IComparable<Item>
{
    public int money;
    public Item(int money) 
    { 
        this.money = money;
    }

    public int CompareTo(Item other)
    {
        //返回值的含义
        //小于0:放在传入对象的前面
        //等于0:保持当前的位置不变
        //大于0:放在传入对象的后面
        //可以理解为传入对象的位置为0
        if(this.money > other.money)
        {
            return 1;
        }
        else
        {
            return -1;
        }
    }
}
  1. List可以传入委托,委托变量存储实现sort排序的方法,这样,不用在排序class对象时再在每个class里继承接口,然后实现接口的方法。而是在想排序时,写一个sort排序方法,然后想排序就将sort排序方法用委托作为参数传入排序执行代码中。
static void Main(string[] args)
{
    shopItems.Sort(SortShopItem);
    for (int i = 0;i < shopItems.Count; i++)
    {
        Console.WriteLine(shopItems[i].id);
    }
}

static int SortShopItem(ShopItem item,ShopItem item1)
{
    if(item.id > item1.id) { return 1; }
    else return -1;
}
  1. 另外一种方法:用匿名函数的方式
shopItems.Sort(delegate (ShopItem item, ShopItem item1) 
{
    if (item.id > item1.id) { return 1; }
    else return -1;
});
  1. 另外一种方法:用Lambda表达式的方式
shopItems.Sort( (ShopItem item, ShopItem item1) =>
{
    if (item.id > item1.id) { return 1; }
    else return -1;
});

用Lambda表达式的方式,同时用三目运算符

shopItems.Sort((ShopItem item, ShopItem item1) => { return item.id > item1.id ? 1 : -1; });

用Lambda表达式,同时省去参数类型,同时用三目运算符,简洁的写法

shopItems.Sort((item, item1) => { return item.id > item1.id ? 1 : -1; });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值