Linq 将索引器作为 IEnumerable.Select 选择器传递

Linq pass an Indexer as IEnumerable.Select selector

是否有允许将索引器作为 Select(Func<T,TResult> selector) 选择器传递的语法?例如,是否有 shorthand(即没有 'arrow')用于以下使用索引器的代码:

// full version using indexer
collection.Select(key => dictionary[key]);

和其他成员函数一样吗?例如:

// full
collection.Select(key => dictionary.ContainsKey(key));
// shorthand
collection.Select(dictionary.ContainsKey);

none 以下似乎有效:

// shorthand attempts with invalid syntax
collection.Select(dictionary.[]);
collection.Select(dictionary[]);

索引器毕竟只是方法...

无法直接为索引器编写 "method group",但您可以在 Dictionary<TKey, TValue> 上编写扩展方法并使用该方法组:

public static TValue Get<TKey, TValue>(this Dictionary<TKey, TValue> dict, TKey key) => dict[key];

现在您可以在 lambda 中使用 someDict.Get