C# 按类型筛选实体集中的派生类并获取异常

C# 按类型筛选实体集中的派生类并获取异常,c#,.net,entity-framework,oftype,C#,.net,Entity Framework,Oftype,我试图过滤实体中的派生类,但遇到异常 var filtered = db.PersonSet.OfType<Person>(). Where(person =>person.GetType()==typeof(Person)) var filtered=db.perscent.OfType()。 其中(person=>person.GetType()==typeof(person)) 若我尝试按foreach循环过滤的集合,我将遇到以下异常 “

我试图过滤实体中的派生类,但遇到异常

var filtered = db.PersonSet.OfType<Person>().
               Where(person =>person.GetType()==typeof(Person))
var filtered=db.perscent.OfType()。
其中(person=>person.GetType()==typeof(person))
若我尝试按foreach循环过滤的集合,我将遇到以下异常

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

我怎样才能克服它?过滤的替代方法是什么

试试这个:

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

这应该行得通,但没必要。第一行应该确保只获取Person类型的对象

在执行toList的那一刻,查询就被执行了,筛选太晚了。如果设置对象查询,则在where子句之后添加Group by子句,它将执行所需的辅助筛选。据我所知,group by子句用于对结果集进行二次筛选。

@Freshblood发生异常是因为它试图将强制转换放入SQL语句中。你必须首先取回对象,然后过滤它们。你能分享一个例子吗?