LINQ orderby vs IComparer

sen*_*ale 13 c# linq icomparer

我想知道什么是更好用.

用于排序的IComparer类和Compare方法或列表上的LINQ orderby.两者都工作正常但哪一个更适合大型列表.

Dav*_*kle 10

我会选择LINQ有两个原因.

  • LINQ查询通常更短且更易于阅读.
  • 如果您确实拥有大量元素,Linq还可以使用PLinq 扩展到多个CPU核心,这可能会对您有很大帮助.

如果你认为OrderBy子句中的lambda表达式编译成一个函数,我希望单线程实现的性能大致相似 - 这几乎是你通过实现IComparer得到的.

话虽如此,您可以通过更改排序算法来获得更多性能提升,以便根据数据的排序方式进行定制,而不是通过更改比较方法.但是我愿意今天早上打赌我的咖啡,你的Linq语句中的OrderBy使用了Quicksort的实现,所以在一般情况下它可能已经相当不错了.