Фильтрация производных классов в Entity, установленном OfType, и получение исключения - PullRequest
3 голосов
/ 13 июля 2010

Я пытаюсь отфильтровать производные классы в моих сущностях, но получаю исключение.

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

Я получаю исключение ниже, если пытаюсь зациклить отфильтрованную коллекцию по foreach.

"LINQ to Entities не распознает метод метода System.Type GetType (), и этот метод нельзя преобразовать в выражение хранилища. ".

Как я могу его преодолеть?Какой может быть альтернативный способ фильтрации?

Ответы [ 2 ]

0 голосов
/ 13 июля 2010

В ту минуту, когда вы делаете toList, запрос выполняется и фильтрация выполняется слишком поздно.Если вы настроили запрос объекта, то добавьте предложение Group by после предложения where, оно должно выполнить дополнительный фильтр, который вы хотите.Насколько я понимаю, предложение group by предназначено для вторичной фильтрации набора результатов.

0 голосов
/ 13 июля 2010

Попробуйте это:

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

Это должно работать, но это не нужно. Первая строка должна гарантировать, что вы получаете только объекты типа Person.

...