Сравните EntityCollection<Class> в запросе LinqToEntity

Можно ли сравнить два EntityCollection в запросе Linq?

Я попробовал так:

from t in _bdd.Table
where (idList).All(id=>  t.ids.Contains(id))
                         select i).FirstOrDefault()

где idList и идентификаторы являются EntityCollection

но я получил NotSupportedException:

"Unable to create a constant value of type (ID) Only primitive types ('such as Int32, String, and Guid') are supported in this context"

Разве нет способа сравнить два списка в одном запросе Linq?

1 ответ

Решение

Во-первых, исключение вызвано использованием локальной коллекции (idList) в качестве источника в предложении where. Вместо этого вы должны попытаться поменять его сторону, чтобы он оказался справа, внутри какого-то метода LINQ.

Я думаю, что здесь запрос даст вам результат, который вы хотите:

where t.ids.Count() == idList.Count() && t.ids.All(ids => idList.Contains(id))

Кроме того, часть "выберите я" не ясно, что он выбирает. В вашем фрагменте кода нет переменной с именем i.

Другие вопросы по тегам