为 Orderby c# 字典使用谓词

Using predicate for Orderby c# Dictionary

帮我设计新主题"predicate" 我有一个问题要更改此代码以使用谓词:

 var d = dict.OrderBy(delegate(KeyValuePair<string,int> pair) { return pair.Value; });

但不知道它是如何工作的...

问题出在哪里?

delegate(KeyValuePair<string, int> pair) { return pair.Value; } 等同于 Func<KeyValuePair<string, int>, int>.

因此你可以很容易地用这个替换你的代码:

var d = dict.OrderBy((KeyValuePair<string, int> pair) => pair.Value);

或更简单:

var d = dict.OrderBy(pair => pair.Value);

因为编译器可以自动推断委托中实例的类型。

顺便说一句:谓词基本上是一种需要您的类型实例的方法(在您的情况下 KeyValuePair<string, int> 和 returns 一个 bool,因此 Func<T, bool>.