我有一个具有 x 和 y 值的 A 类列表:
class A
{
public int X { get; set; }
public int Y { get; set; }
}
我的 list :
List<A> MyList = GetListOfA();
我想通过计算 A 属性的值对列表进行排序。例如,今天的美元汇率乘以 X。 如果我将使用 OrderBy 表达式,该方法将计算 x*log(x) 次。
我找到了一些方法来做到这一点,比如创建包含值和变量的内部类,将包含变量和计算值列表的匿名类型列表,通过计算值的键将其添加到排序字典等
使用简洁明了的语法的最佳方法是什么?
最佳答案
If I will use OrderBy expression the method will be calculate x*log(x) times.
不,不会的。在 LINQ to Objects 中,OrderBy
将每个元素投影到其排序键一次,然后比较这些键。对于大小为 n
的集合,将对属性进行 n
次访问,然后在这些属性值之间进行 O(n log n) 次比较。
所以基本上,您应该只使用 OrderBy
尽可能简单地编写代码 - 并相信它会相当高效。
关于c# - 按计算值排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16883957/