我想知道什么更好用。
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/