c# - 按计算值排序列表

标签 c# .net sorting lambda

我有一个具有 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/

相关文章:

php - 在不保留原始键的情况下自然地对平面数组进行排序

sorting - SSRS tablix 排序不适用于日期列

c# - 按钮 onClick 未绑定(bind)到 Activity 中的方法

c# - 修改 XML 模式时如何管理 ItemChoiceType 枚举的更改?

c# - 使用 Automapper 映射对象列表

mysql - mysql中的组内排序

c# - 实现 IAsyncEnumerable 的空 IQueryable

c# - 在 Visual Studio 中调试第三方 DLL?

.net - WCF错误 "Found multiple X.509 certificates using search criteria"

.net - 我可以定位 .net 的(表单)消息框或通用对话框吗?