linq查询字典obj

时间:2012-04-05 11:18:11

标签: c# linq dictionary

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

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

对象将是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>);

我需要查询字典name并获取对象(A或B)。对于前者NAME = “约翰”。

1 个答案:

答案 0 :(得分:0)

所有特殊集合都源自相同的基类型,因此您可以简单地遍历所有集合并将对象转换为C类型:

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