我通过
获取对象IEnumerable<ObjectStateEntry> om = context.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified);
如何使用字符串给出的类型获取List
个对象?
Type typ = Type.GetType("mytype");
var om2 = om.Select(s => s.Entity).OfType<typ>(); // does not work
答案 0 :(得分:4)
您尝试做的事情无法静态完成:var
对应于表达式的静态类型,而右侧表达式的类型显然是非静态的(它是IEnumerable<T>
,其中T
在运行时之前是未知的。
然而,这是合法的:
var om2 = om.Select(s => s.Entity).Where(v => typ.IsInstanceOfType(v));
这会产生IEnumerable<ObjectStateEntry>
。
答案 1 :(得分:1)
怎么样
Type typ = Type.GetType("mytype");
var om2 = om.Select(s => s.Entity).Where(e=>typeof(e) == typ);
请注意,他将返回匹配类型完全匹配的匹配项(而不是位于同一继承树中)。