5

我得到对象

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
4

2 回答 2

4

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

但是,这是合法的:

var om2 = om.Select(s => s.Entity).Where(v => typ.IsInstanceOfType(v));

这将产生一个IEnumerable<ObjectStateEntry>.

于 2012-11-07T11:43:54.720 回答
1

怎么样

Type typ = Type.GetType("mytype");
var om2 = om.Select(s => s.Entity).Where(e=>typeof(e) == typ);

请注意,他将返回类型完全匹配的匹配项(而不是在同一继承树中)。

于 2012-11-07T11:43:40.580 回答