C# 如何铸造IQueryable<;对象>/IEnumerable<;对象>;特定类型

C# 如何铸造IQueryable<;对象>/IEnumerable<;对象>;特定类型,c#,generics,reflection,C#,Generics,Reflection,我有一个集合(IQueryable/IEnumerable)和一个给定的类型,我在运行时通过反射得到它。在以下情况下,如何将IQueryable强制转换为特定的类型: Type是一个类,例如Person(我想将IQueryable转换为IQueryable) Type是一个通用集合,例如IQueryable 注意,Type是通过aVariable.GetType()获得的变量。我事先不知道类型,因此我不能使用Castnor(type) 如果已知目标类型,请执行此操作 yourIEnumerabl

我有一个集合(
IQueryable/IEnumerable
)和一个给定的
类型,我在运行时通过反射得到它。在以下情况下,如何将
IQueryable
强制转换为特定的
类型

  • Type
    是一个类,例如
    Person
    (我想将
    IQueryable
    转换为
    IQueryable
  • Type
    是一个通用集合,例如
    IQueryable

  • 注意,Type是通过aVariable.GetType()获得的变量。我事先不知道类型,因此我不能使用
    Cast
    nor(type)

    如果已知目标类型,请执行此操作

    yourIEnumerable.Select(x => (YourType) x);
    

    但是正如您所注意到的,您不知道目标类型的类型,而是使用
    object.GetType()获得它
    因此我建议遵循link

    他们发明泛型就是为了这个原因。你不使用泛型函数吗?看看Midas,让我们假设你已经使用反射将
    IEnumerable
    转换为
    IEnumerable
    。你将如何使用它?只有在运行时才知道类型的集合有什么意义?