Linq OrderByDescending具有内联比较器功能

时间:2014-11-13 16:01:09

标签: vb.net linq visual-studio

假设我有一个存储在列表中的自定义对象,我想根据其中一个属性的绝对值对其进行排序(存储为double)。

在我的代码中我有这个:

MyList.Sort(Function(ob1, ob2) Math.Abs(ob1.Val).CompareTo(Math.Abs(ob2.Val)))

完美无缺! - 但现在我想按降序对其进行排序

我知道linq有OrderByDescending,但我似乎无法使用内联比较器功能。那怎么样?或者还有另一种更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

MyList = MyList.OrderByDescending(Function(ob) Math.Abs(ob.Val)).ToList()

Sort不同,OrderByDescending不会对列表进行排序。此外,该函数只需返回每个项目的排序键。

<强>更新

我错过了OrderByDescending的超载IComparer,所以你也可以这样做:

MyList = MyList.OrderByDescending(
    Function(ob) ob.Val,
    Comparer(Of Double).Create(
        Function(key1, key2) Math.Abs(key1).CompareTo(Math.Abs(key2))
    )
).ToList()