我有一组对象,我知道我可以通过说
按NAME(字符串类型)排序collEquipment.Sort((x, y) => string.Compare(x.ItemName, y.ItemName));
那工作。
但是我想按ID(整数类型)排序,并且没有Int32.Compare
这样的东西那我该怎么做?这不起作用
collEquipment.Sort((x, y) => (x.ID < y.ID)); //error
我知道答案很简单。 Lambda的表达让我很困惑。
答案 0 :(得分:14)
collEquipment.Sort((x, y) => y.ID.CompareTo(x.ID));
答案 1 :(得分:8)
在这里,您可以针对任何实现IComparable[<T>]
的属性(int
执行)对列表进行排序:
public static class ListExtensions {
public static void Sort<TSource, TValue>(
this List<TSource> list,
Func<TSource, TValue> selector) {
list.Sort((x,y) => Comparer<TValue>.Default
.Compare(selector(x),selector(y)));
}
}
现在:
collEquipment.Sort(x => x.ItemName);
或
collEquipment.Sort(x => x.ID);
答案 2 :(得分:7)
试试这个
collEquipment.Sort((x, y) => y.ID - x.ID);