我正在尝试过滤我的实体中的派生类,但我得到了异常。
var filtered = db.PersonSet.OfType<Person>().
Where(person =>person.GetType()==typeof(Person))
如果我尝试使用foreach循环过滤集合,我将获得以下异常。
“LINQ to Entities无法识别方法'System.Type GetType()'方法,并且此方法无法转换为商店表达式。”。
我怎样才能克服它?有什么可以替代的过滤方式?
答案 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子句用于对结果集进行二次过滤。