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 オブジェクトには、次のようなエントリがあります。

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 に答える