LINQ过滤类型列表中的字典值

ear*_*cam 2 c# linq

认为这是一个非常基本的问题,但这是我的第一个LINQ查询,我完全陷入困境:

我有一个字符串,其中包含字符串键和列表值(请参阅下面的定义),并希望提取已通过字典键选择列表的特定类型列表的元素.

IDictionary<string, IList<MyBaseType>> dataItemMap;
Run Code Online (Sandbox Code Playgroud)

MySubType扩展MyBaseType的位置.

我的狡猾问题是:

string identCode = "foo";

IEnumerable<MySubType> query = 
    from entry in dataItemMap
    where entry.Key == identCode
    select entry.Value.OfType<MySubType>();
Run Code Online (Sandbox Code Playgroud)

和错误消息(来自LinqPad):

Cannot implicitly convert type
'System.Collections.Generic.IEnumerable<System.Collections.Generic.IEnumerable<MySubType>>'
to 'System.Collections.Generic.IEnumerable<MySubType>'.
An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)

问题显然在entry.Value.OfType <>但是如何指定列表元素?我正在寻找像entry.Value.Items.OfType <>这样的东西?

谢谢.

And*_*wry 8

我想你想要这样的东西:

IEnumberable<MySubType> query = dataItemMap[identCode].OfType<MySubType>();
Run Code Online (Sandbox Code Playgroud)

这将获得具有给定键的列表,然后过滤它以仅返回MySubType元素.