Сравните 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.