LINQorderbyvsIComparer想知道用什么比较好。IComparer类和比较方法,用于对列表进行排序或LINQorderby。两者都可以正常工作,但哪一个更适合大型列表。我会选择LINQ有两个原因。如果您考虑将OrderBy子句中的lambda表达式编译为函数,我希望单线程实现的性能大致相似——这与实现IComparer所获得的性能差不多。话虽如此,可以通过更改排序算法以适应数据的排序方式来提高性能,而不是通过更改比较方法。但是今天早上我敢打赌你的Linq语句中的OrderBy使用了Quicksort的实现,所以在一般情况下它可能已经相当不错了。我更喜欢将LINQ用于所有基于集合的操作。这里的优点是我不必过多考虑我正在使用的集合类型(OrderBy适用于IEnumerable)。如果您有一个IList,那么List.Sort可能会更快。无论如何,在证明(即测量)性能问题之前我不会担心它我认为在语义上两者非常不同,IComparer接口允许您自然地定义类型的排序方式,OrderBy为您提供了一种对对象进行排序的方法一些特定的键,例如给定一个Person对象列表,查询A按名称对列表进行排序,查询B按年龄对列表进行排序。LINQ给了你更多的灵活性,但是由于OrderBy需要一个Func,它接受你的对象类型并返回一个用于排序的键,所以无论你返回什么键,你仍然需要实现IComparer接口。就大型列表的性能而言,取决于您在Compare方法中所做的事情,我认为这两种方法之间的差异可能很小,尽管最好只测试您的类型。以上就是C#学习教程:LINQorderbyvsIComparer分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
