0

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

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

object 将是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<SomeEnumType, object> dicobj= new Dictionary<SomeEnumType, object>();
dicobj.Add(SomeEnumType.AType, List<A>);
dicobj.Add(SomeEnumType.BType, List<B>);

我需要查询字典name并获取对象(A 或 B)。例如。名称="约翰"。

4

1 回答 1

0

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

dictObj.Values.OfType<ICollection>()
              .SelectMany(collection => collection.OfType<C>())
              .Where(itemOfTypeC => itemOfTypeC.Name == "John");
于 2012-04-05T13:24:07.240 回答