说我有一个功能
public float GetOBJECTActivity(OBJECT ob){
// returns some float
}
在另一个函数中,我得到一个 OBJECT ( List<OBJECT>
) 列表,我想根据GetOBJECTActivity
函数结果(降序或升序)对其进行排序。
如何在 C# 中以最佳性能做到这一点?我会在我的项目中做很多类似的操作,我想确保我使用最快和最优雅的方式。
谢谢
static int MyActivityComparison(OBJECT a, OBJECT b)
{
float x = GetOBJECTActivity(a);
float y = GetOBJECTActivity(b);
// ascending
return x.CompareTo(y);
// descending
// return y.CompareTo(x);
}
list.Sort(MyActivityComparison);
或者使用 lambda 表达式,如果您不想定义独立函数:
list.Sort((a, b) =>
{
float x = GetOBJECTActivity(a);
float y = GetOBJECTActivity(b);
return x.CompareTo(y); // ascending
// return y.CompareTo(x); // descending
});
制作一个Comparer,然后将该比较器与List.Sort()一起使用
到目前为止,让您的列表排序的最快和最优雅的方法是让内置函数来完成。
很多类型(浮点数、字符串、整数)都内置了比较器,所以如果你知道这些是你要使用的唯一类型,那么你可以调用List.Sort()