过滤由OfType设置的实体中的派生类并获取异常

时间:2010-07-12 21:30:32

标签: c# .net entity-framework oftype

我正在尝试过滤我的实体中的派生类,但我得到了异常。

var filtered = db.PersonSet.OfType<Person>().
               Where(person =>person.GetType()==typeof(Person))

如果我尝试使用foreach循环过滤集合,我将获得以下异常。

“LINQ to Entities无法识别方法'System.Type GetType()'方法,并且此方法无法转换为商店表达式。”。

我怎样才能克服它?有什么可以替代的过滤方式?

2 个答案:

答案 0 :(得分:0)

试试这个:

var persons= db.PersonSet.OfType<Person>().ToList();
var filtered = persons.Where(person =>person.GetType()==typeof(Person))

这应该有效,但这是不必要的。第一行应确保只获取Person类型的对象。

答案 1 :(得分:0)

执行toList的那一刻,执行查询并且过滤太晚了。如果您设置了一个对象查询,那么在您的where子句之后添加一个Group by子句,它应该执行您想要的二级过滤器。据我所知,group by子句用于对结果集进行二次过滤。