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)次.
我找到了一些方法来创建内部类,包括值和变量,匿名类型列表,将包括变量和计算值的列表,通过计算值的键将其添加到排序字典等.
使用简洁明了的语法来实现它的最佳方法是什么?
如果我将使用OrderBy表达式,该方法将计算x*log(x)次.
不,不会.在LINQ to Objects中,OrderBy将每个元素投影到其排序键一次,然后比较这些键.对于大小的集合n,将n访问属性,然后在这些属性值之间进行O(n log n)比较.
所以基本上,您应该OrderBy尽可能简单地编写代码 - 并相信它会合理有效.