如何使用Lambda表达式对对象内的INTEGERS进行排序?

时间:2010-05-04 15:31:56

标签: c# collections lambda

我有一组对象,我知道我可以通过说

按NAME(字符串类型)排序
collEquipment.Sort((x, y) => string.Compare(x.ItemName, y.ItemName));

那工作。

但是我想按ID(整数类型)排序,并且没有Int32.Compare

这样的东西

那我该怎么做?这不起作用

collEquipment.Sort((x, y) => (x.ID < y.ID));  //error

我知道答案很简单。 Lambda的表达让我很困惑。

3 个答案:

答案 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);