以不同方式进行排序的比较
本文关键字:排序 比较 方式进 | 更新日期: 2023-09-27 17:58:12
我有一个实现IComparable的类。它是有效的,但比较是静态的,即它总是与它实现的排序相同。通过参数引入比较的好方法是什么,即如果我们有:
class Poo : IComparable {
public int A { ... };
public int B { ... };
...
}
IEnumerable<Foo> list = ...;
list = list.Sort(???);
我想根据在问号处传递给Sort的参数,对A或B列表进行排序。最有效的方法是什么?
目前,我想到的最好的方法是声明我传递给Sort的几个方法作为委托。
private static int CompareWrtA(Foo foo1, Foo foo2) { ... }
private static int CompareWrtB(Foo foo1, Foo foo2) { ... }
if(withRespectToA)
list = list.Sort(CompareWrtA);
else
list = list.Sort(CompareWrtB);
但这并不是最好的方式。批评是受欢迎的。
如果你想简化该语句,你可以这样写:
list.Sort((x,y) => withRespectToA ? CompareWrtA(x,y) : CompareWrtB(x,y));
顺便说一句,Sort
方法正在修改您的列表,它不返回任何内容。所以你不需要把它重新分配到你的列表中。