0

说我有一个功能

public float GetOBJECTActivity(OBJECT ob){

   // returns some float
}

在另一个函数中,我得到一个 OBJECT ( List<OBJECT>) 列表,我想根据GetOBJECTActivity函数结果(降序或升序)对其进行排序。

如何在 C# 中以最佳性能做到这一点?我会在我的项目中做很多类似的操作,我想确保我使用最快和最优雅的方式。

谢谢

4

2 回答 2

0
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
    });
于 2012-07-16T22:20:58.350 回答
0

制作一个Comparer,然后将该比较器与List.Sort()一起使用

到目前为止,让您的列表排序的最快和最优雅的方法是让内置函数来完成。

很多类型(浮点数、字符串、整数)都内置了比较器,所以如果你知道这些是你要使用的唯一类型,那么你可以调用List.Sort()

于 2012-07-16T22:16:07.847 回答