为 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>
.
帮我设计新主题"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>
.