首页 > 解决方案 > 有没有办法将类型动态分配给通用 linq 表达式?

问题描述

当子类型仅在运行时已知时,有没有办法从特定子类型的集合中获取对象?就像是:

class A
{}

class B : A
{}

class C : A
{}

Main()
{ 
  List<A> outsideList = new List<A>() {new A(), new B(), new C()};

     foreach(var ojb in outsideList)
     {
       dosomethingwithanobject(ojb);
     }
}

void dosomethingwithanobject(A obj)
{
     List<A> intenalList = new List<A>() { new C(), new A(), new B()};
   // this can be A, B or C
   type DESIREDTYPE = typeof(obj);

  var item = list.GetSubType<DESIREDTYPE>().FirstOrDefault();

      // do something with the item
}

标签: linqgenericsreflection

解决方案


我认为您可以使用以下代码:

var result = intenalList.Where(x => x.GetType() == obj.GetType()).FirstOrDefault();

推荐阅读