Użyłem słowa kluczowego „select” i metody rozszerzenia, aby zwrócić za IEnumerable<T>
pomocą LINQ, ale muszę zwrócić typ ogólny Dictionary<T1, T2>
i nie mogę tego rozgryźć. W przykładzie, którego się tego nauczyłem, użyłem czegoś w formie podobnej do poniższej:
IEnumerable<T> coll = from x in y
select new SomeClass{ prop1 = value1, prop2 = value2 };
Zrobiłem to samo z metodami rozszerzającymi. Założyłemże skoro elementy w a Dictionary<T1, T2>
mogą być iterowane tak KeyValuePair<T1, T2>
, że mogłem po prostu zamienić "SomeClass" w powyższym przykładzie na " new KeyValuePair<T1, T2> { ...
", ale to nie zadziałało (Klucz i Wartość zostały oznaczone jako tylko do odczytu, więc nie mogłem skompilować tego kodu ).
Czy to możliwe, czy muszę to zrobić w kilku krokach?
Dzięki.
.ToDictionary(item => item.prop1, item => item.prop2);
by wyraźnie ustawić wartość również.Zbiór
KeyValuePair
jest jeszcze bardziej wyraźny i działa bardzo dobrze.źródło