List 排序API
public void Sort(Comparison<T> comparison);
public void Sort(int index, int count, IComparer<T> comparer);
public void Sort();
public void Sort(IComparer<T> comparer);
1. List<int> list = new List<int>() { 2, 1 } 升序,降序直接反转升序
list.Sort();// 升序排序
list.Reverse();// 反转顺序
list.Sort((x, y) => x.CompareTo(y));//升序
list.Sort((x, y) => -x.CompareTo(y));//降序
2. List<TestList> testList = new List<TestList>()
TestList 是一个类 则不可直接list.Sort()进行排序
相关排序方式如下:
List<TestList> testList = new List<TestList>();
TestList list1 = new TestList {
name = "A",
height = 10,
status = 1,
};
TestList list2 = new TestList {
name = "B",
height = 20,
status = 0,
};
TestList list3 = new TestList {
name = "C",
height = 30,
status = 1,
};
TestList list4 = new TestList {
name = "D",
height = 40,
status = 0,
};
testList.Add(list1);
testList.Add(list2);
testList.Add(list3);
testList.Add(list4);
升序:
testList.Sort(
(a, b) => a.status.CompareTo(b.status)
);
testList = testList.OrderBy(o => o.status).ToList();
附:Sort的排序打乱了原有的顺序,OrderBy则没有打乱
降序:
testList.Sort(
(a, b) => -a.status.CompareTo(b.status)
);
testList = testList.OrderByDescending(o => o.status).ToList();
附:降序Sort排序也是打乱了原有的排序
多权重排序
testList = testList.OrderBy(o => o.status).OrderBy(o=>o.height).ToList();
testList = testList.OrderByDescending(o => o.status).OrderByDescending(o => o.height).ToList();