按字符串给出的类型获取对象列表

dan*_*iel 5 c# generics types entity-framework

我得到了对象

IEnumerable<ObjectStateEntry> om = context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);        
Run Code Online (Sandbox Code Playgroud)

如何获取List字符串给出的类型的对象?

Type typ = Type.GetType("mytype");
var om2 = om.Select(s => s.Entity).OfType<typ>(); // does not work
Run Code Online (Sandbox Code Playgroud)

das*_*ght 4

您尝试做的事情不能静态完成:var对应于表达式的静态类型,而右侧表达式的类型显然是非静态的(它是IEnumerable<T>T在运行时之前不知道)。

然而,这是合法的:

var om2 = om.Select(s => s.Entity).Where(v => typ.IsInstanceOfType(v));
Run Code Online (Sandbox Code Playgroud)

这将产生一个IEnumerable<ObjectStateEntry>.