Я хотел написать этот оператор LINQ:
Dictionary<int, ItemBO> result = ( Dictionary<int, ItemBO> )
( from item in originalResults where item.Value.SomeCriteria == true
select item );
originalResults
имеет тип Dictionary
.
Я понимаю, что item
имеет тип KeyValuePair
, но я бы подумал, что приведение списка этого типа к словарю этого типа было бы ... э ... "Естественным".
Вместо этого, чтобы заставить компилятор замолчать, мне нужно было написать this:
Dictionary<int, ItemBO> result =
( from item in originalResults where item.Value.SomeCriteria == true
select item.Value ).ToDictionary( GetItemKey );
Что, хотя и не является полностью противоречащим интуиции, предполагает, что много ненужной работы по распаковке и переупаковке Словаря происходит под прикрытием. Есть ли лучшее решение? Есть ли концепция, которую я упускаю?