按计算值排序列表

use*_*862 1 .net c# sorting lambda

我有一个具有x和y值的A类列表:

class A
{
   public int X { get; set; }
   public int Y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的列表:

List<A> MyList = GetListOfA();
Run Code Online (Sandbox Code Playgroud)

我想通过计算A属性的值来对列表进行排序.例如今天美元汇率乘以X.如果我将使用OrderBy表达式,该方法将计算x*log(x)次.

我找到了一些方法来创建内部类,包括值和变量,匿名类型列表,将包括变量和计算值的列表,通过计算值的键将其添加到排序字典等.

使用简洁明了的语法来实现它的最佳方法是什么?

Jon*_*eet 5

如果我将使用OrderBy表达式,该方法将计算x*log(x)次.

不,不会.在LINQ to Objects中,OrderBy将每个元素投影到其排序键一次,然后比较这些键.对于大小的集合n,将n访问属性,然后在这些属性值之间进行O(n log n)比较.

所以基本上,您应该OrderBy尽可能简单地编写代码 - 并相信它会合理有效.