C# 字典obj的linq查询

C# 字典obj的linq查询,c#,linq,dictionary,C#,Linq,Dictionary,我有一个dictionary对象dictionary 对象将是a、B的集合 public class C {public string Name {get;set;}} public class A: C { public string prop1 {get;set;}} public class B: C { public string prop2 {get;set;}} Dictionary对象将包含如下条目: Dictionary<SomeEnumType, object>

我有一个dictionary对象
dictionary

对象将是
a、B
的集合

public class C {public string Name {get;set;}}
public class A: C { public string prop1 {get;set;}}
public class B: C { public string prop2 {get;set;}}
Dictionary对象将包含如下条目:

Dictionary<SomeEnumType, object> dicobj= new Dictionary<SomeEnumType, object>();
dicobj.Add(SomeEnumType.AType, List<A>);
dicobj.Add(SomeEnumType.BType, List<B>);
Dictionary dicobj=newdictionary();
添加(SomeEnumType.atType,列表);
添加(SomeEnumType.b类型,列表);

我需要在字典中查询
名称
并获取对象(A或B)。对于ex.Name=“John”。

您的所有特殊集合都是从相同的基类型派生的,因此您可以简单地迭代所有集合并将对象强制转换为C类型:

dictObj.Values.OfType<ICollection>()
              .SelectMany(collection => collection.OfType<C>())
              .Where(itemOfTypeC => itemOfTypeC.Name == "John");
dictObj.Values.OfType()的
.SelectMany(collection=>collection.OfType())
.Where(itemOfTypeC=>itemOfTypeC.Name==“John”);

如果您能给出一些填充集合的示例代码,您的问题就会清楚得多。
a的集合
是一个
列表
?@Jon-您的意思是填充a、B集合吗?A、 B可以列举,列举。@stech:我是说全部。如果你能给我们一个完整的程序,除了你不知道怎么做的位(以及预期的结果),它会变得更简单。你是说最终的查询应该返回dicobj,它的集合包含一个名为John的项吗?
dictObj.Values.OfType<ICollection>()
              .SelectMany(collection => collection.OfType<C>())
              .Where(itemOfTypeC => itemOfTypeC.Name == "John");