linq – 传递lambda表达式代替IComparer或IEqualityComparer或任何单一方法接口?

我偶然看到一些代码,这家伙通过lambda表达式到ArrayList.Sort(IComparer这里)或IEnumerable.SequenceEqual(IEnumerable列表,IEqualityComparer这里),其中期望一个IComparer或IEqualityComparer。

我不能确定,如果我看到了,或者我只是在做梦。我似乎不能找到任何这些集合接受一个Func<>或其方法签名中的委托。

有没有这样的重载/扩展方法?或者,如果不是,是否有可能像这样,并传递一个算法(读委托)在单方法接口,期望?

更新
感谢大家。我也这么想。我一定是在做梦。我知道如何写一个转换。我只是不知道,如果我看到类似的东西,或只是想我已经看到了。

还有另一个更新
看,在这里,我发现了一个这样的实例。我毕竟不是在做梦。看看what this guy is doing here.什么给了?

这里是另一个更新:
好的我明白了。该家伙使用比较< T>超载。尼斯。尼斯,但完全容易误导你。尼斯,虽然。谢谢。

我不太确定什么有用的它是真的,因为我认为在大多数情况下,基本库期望一个IComparer有一个重载,期望一个比较…但只是为了记录:

在.Net 4.5中,他们添加了一个方法来从比较获得一个IComparer:
Comparer.Create

所以你可以传递你的lambda到它,并获得一个IComparer。

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...