pun*_*ter 2 c# collections lambda
我有一个对象的集合,我知道我可以按照NAME(字符串类型)排序
collEquipment.Sort((x, y) => string.Compare(x.ItemName, y.ItemName));
Run Code Online (Sandbox Code Playgroud)
这样可行.
但我想按ID(整数类型)排序,并且没有Int32.Compare这样的东西
那我该怎么做?这不起作用
collEquipment.Sort((x, y) => (x.ID < y.ID)); //error
Run Code Online (Sandbox Code Playgroud)
我知道答案很简单.Lambda的表达让我很困惑.
在这里,您可以针对任何实现的属性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)));
}
}
Run Code Online (Sandbox Code Playgroud)
现在:
collEquipment.Sort(x => x.ItemName);
Run Code Online (Sandbox Code Playgroud)
要么
collEquipment.Sort(x => x.ID);
Run Code Online (Sandbox Code Playgroud)
试试这个
collEquipment.Sort((x, y) => y.ID - x.ID);
Run Code Online (Sandbox Code Playgroud)