C# 字典obj的linq查询
我有一个dictionary对象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
对象将是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");