2014-09-19 4 views
0

У меня есть IQueryable (Of T) и список зависимых элементов List (of T). Я пытаюсь достичь IQueryable (Of T), который исключает все элементы в списке (T).Получите элементы iqueryable, которые не существуют в другом списке, используя выражение lambda

Dim returnQuery As IQueryable(Of POCO.ClassName) = GetTheQuery(...) 
Dim excludeLists As List(Of POCO.ClassName) = GetExcludedList(...) 

returnQuery = returnQuery.Except(excludeLists) 

Ошибка при попытке выполнить результат для IQueryable.

Невозможно создать постоянное значение типа «POCO.ClassName». В этом контексте поддерживаются только примитивные типы или типы перечислений.

Похоже, что в этом случае это не сработает. Итак, как я могу исключить элементы списка, используя лямбда-выражения.

+0

Это интересно. Я думаю, вам лучше не использовать лямбду и просто использовать Linq. Есть ли конкретная причина, по которой вам нужно внедрить лямбда? – Airborne

+0

@ Airborne никаких особых причин. Я знаю, как это может сделать Linq, но интересно, есть ли способ добиться Лямбдой или нет. – MJK

ответ

2

Ну, типичный пример: http://msdn.microsoft.com/en-us/library/vstudio/bb300779(v=vs.100).aspx использует удваивает, и в сочетании с полученной вами ошибкой ясно, что Except работает только на таких примитивах, как парные.

Итак, вам придется использовать Linq, и в этом нет ничего плохого.

returnQuery = returnQuery.Where(item => !excludeLists.Contains(item)) 
Смежные вопросы