我想写这个LINQ语句:
Dictionary<int, ItemBO> result = ( Dictionary<int, ItemBO> )
( from item in originalResults where item.Value.SomeCriteria == true
select item );
originalResults
是一个 Dictionary<int, ItemBO>
类型。
我知道 item
是一个 KeyValuePair<int, ItemBO>
类型,但我本来以为从这个类型的列表转换成同类型的字典应该是很自然的事情。
然而,为了让编译器闭嘴,我不得不写出以下代码:
Dictionary<int, ItemBO> result =
( from item in originalResults where item.Value.SomeCriteria == true
select item.Value ).ToDictionary( GetItemKey );
尽管这并不完全违背直觉,但这表明在内部进行了大量不必要的字典解包和重打包工作。是否有更好的解决方案?我是否缺少某个概念?