Выбор кортежей из ILookup выдает исключение - PullRequest
0 голосов
/ 25 октября 2018

У меня есть 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));
}

Однако компилятор жалуется на это:

Невозможно преобразовать лямбда-выражение в предполагаемый тип делегата, поскольку некоторые изтипы возвращаемых данных в блоке неявно преобразуются в возвращаемый тип делегата.

Даже запись element => (element.Item1, element.Item2, element.Item3) вызывает ту же ошибку.Что я тут не так делаю, типы точно такие же.

1 Ответ

0 голосов
/ 25 октября 2018

Способ получения значений, связанных с данным ключом, заключается в использовании индексатора.Это операция, специально предназначенная для возврата последовательности значений, связанных с этим ключом.Попытка поиска во всей коллекции соответствующего ключа сводит на нет всю цель поиска в первую очередь, поскольку это структура данных, специально разработанная для быстрого поиска данного ключа.

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