从 ILookup 中选择元组抛出异常

Selecting Tuples from ILookup throws exception

我有一个 ILookup<Type, (int, string, BitmapSource)>,它应该在下拉列表中存储元素(否则它们仅作为应用程序中的枚举存在)的显示信息。

元组是这样访问的:

public IEnumerable<(int, string, BitmapSource)> EnumerationValues(Type type)
{
  return this._enumerationValues
             .Where(group => group.Key == type)
             .Select(group => group.SelectMany<(int, string, BitmapSource),
                                               (int, string, BitmapSource)>(element => element));
}

然而,编译器对此有抱怨:

Cannot convert lambda expression to intended delegate type because some of the return types in the block are not implicitly convertible to the delegate return type.

甚至写 element => (element.Item1, element.Item2, element.Item3) 也会导致同样的错误。我哪里做错了,类型一模一样

获取与给定键关联的值的方法是使用索引器。这是专门为 return 与该键关联的值序列而设计的操作。尝试在整个集合中搜索匹配键会破坏首先进行查找的全部目的,因为它是一种专门设计用于快速搜索给定键的数据结构。

public IEnumerable<(int, string, BitmapSource)> EnumerationValues(Type type) =>
    _enumerationValues[type];