Я использовал ключевое слово «select» и метод расширения для возврата IEnumerable<T>
с LINQ, но мне нужно вернуть универсальный Dictionary<T1, T2>
и не могу понять это. Пример, из которого я узнал, использовал что-то в форме, подобной следующей:
IEnumerable<T> coll = from x in y
select new SomeClass{ prop1 = value1, prop2 = value2 };
Я также сделал то же самое с методами расширения. Я предположил, что, поскольку элементы в a Dictionary<T1, T2>
могут быть повторены так, KeyValuePair<T1, T2>
что я мог бы просто заменить «SomeClass» в приведенном выше примере на « new KeyValuePair<T1, T2> { ...
», но это не сработало (Key и Value были помечены как только для чтения, поэтому я не мог скомпилировать этот код ).
Это возможно, или мне нужно сделать это в несколько этапов?
Спасибо.
.ToDictionary(item => item.prop1, item => item.prop2);
для простоты установить значение тоже.Коллекция
KeyValuePair
еще более явная и выполняется очень хорошо.источник