字典obj的linq查询

本文关键字:查询 linq obj 字典 | 更新日期: 2023-09-27 18:30:01

我有一个字典对象Dictionary<SomeEnumType, object>

enum SomeEnumType
{
AType=1,
BType=2,
CType=3
}

对象将是CCD_ 2的集合。

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中查询name并获取对象(A或B)。例如,Name="John"。

字典obj的linq查询

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

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