List 自带排序方法
List<int> list = new List<int>(); list.Add(1); list.Add(2); list.Add(4); list.Add(5); list.Add(3); //list提供了排序方法 list.Sort(); for (int i = 0; i < list.Count; i++) { Console.WriteLine(list[i]); } //ArrayList中也有Sort排序方法
打印结果:
自定义类的排序
class Item :IComparable<Item>//继承接口以实现该自定义类在List中排序 { 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;//要降序写-1 else return -1;//要降序写1 } } internal class Program { static void Main(string[] args) { List<Item> list = new List<Item>(); list.Add(new Item(1)); list.Add(new Item(3)); list.Add(new Item(4)); list.Add(new Item(5)); list.Add(new Item(2)); //排序方法 list.Sort();//未继承接口会报错 for (int i = 0; i < list.Count; i++) { Console.WriteLine(list[i].money); } Console.ReadKey(); } }
通过委托函数进行排序
static void Main(string[] args) { List<ShopItem> list = new List<ShopItem>(); list.Add(new ShopItem(1)); list.Add(new ShopItem(4)); list.Add(new ShopItem(6)); list.Add(new ShopItem(5)); list.Add(new ShopItem(3)); list.Add(new ShopItem(2)); list.Sort(SortShopItem);//也可使用匿名函数或Lambda表达式 for (int i = 0; i < list.Count; i++) { Console.WriteLine(list[i].id); } Console.ReadKey(); } static int SortShopItem(ShopItem a, ShopItem b) { //传入的两个对象 为列表中的两个对象 //进行两两的比较 用左边的和右边的条件 比较 //返回值规则 和之前一样 0做标准 负数在左 (前) 正数在右(后) if (a.id > b.id) return 1; else return -1; //可以简写成 return a.id > b.id ? 1:-1; //或 return a.id-b.id; }