c# - LINQ orderby 与 IComparer

标签 c# linq icomparer

我想知道什么更好用。

IComparer 类和 Compare 方法,用于对 List 进行排序或 LINQ orderby。两者都可以正常工作,但哪一个更适合大型列表。

最佳答案

我会选择 LINQ 有两个原因。

  • LINQ 查询通常更短且更易于阅读。
  • 如果您确实有大量元素,Linq 还可以让您scale out to multiple CPU cores通过使用 PLinq,这可能会大大帮助您。

如果您考虑将 OrderBy 子句中的 lambda 表达式编译为一个函数,那么我希望单线程实现的性能大致相似——这几乎是您通过实现 IComparer 获得的全部内容。

话虽这么说,但通过更改排序算法以适应数据已经排序的方式,而不是通过更改比较方法,您可能会获得更多的性能提升。但今天早上我愿意打赌,Linq 语句中的 OrderBy 使用了 Quicksort 的实现,因此在一般情况下它可能已经相当不错了。

关于c# - LINQ orderby 与 IComparer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3378603/

相关文章:

C# OpenXML 如何从 Cell 获取超链接

.net - 是否可以查看LINQ命令的SQL查询?

c# - LINQ - 使用 OrderBy 和 GroupBy 的子查询

linq - 如何使用LINQ to Entities浏览多个关系?

c# - 使用 Linq 和 IComparer 排序 ObservableCollection

c# - 实现自定义 IComparer<>(附示例)

c# - C# 中的 PriorityQueue 不适用于自定义比较器

c# - 将 Effort 与 Entity Framework 结合使用时,更新模型会导致接口(interface)从 DbContext 中删除

c# - 无法解析属性 : PropertyName of: Class error in NHibernate

c# - 使用参数化参数 WITH sqlcommandbuilder [无数据适配器]