Я пытаюсь сделать ИЛИ. Я думал, что вы могли бы сделать это с Predicate, поэтому я попробовал это
var products = ctx.Products.Where(x => .....);
var predicate = PredicateBuilder.False<Product>();
foreach (Category categ in categs)
predicate = predicate.Or(p => p.Categories.Select(c => c.Id).Contains(categ.Id)
|| p.Categories.Select(c => c.Category1.Id).Contains(categ.Id)
|| p.Categories.Select(c => c.Category1.Category1.Id).Contains(categ.Id));
products = products.Where(predicate);
но это дает мне эту ошибку
System.NotSupportedException: тип узла выражения LINQ 'Invoke' не поддерживается в LINQ to Entities.
Может ли кто-нибудь помочь мне решить эту проблему? Спасибо заранее.
A Product
может иметь один или несколько Category
.
Category
может иметь «родительскую категорию» под названием Category1
. Эти длинные 3 строки выше предназначены для выбора товаров в категории или ее дочерних категориях.
Я гуглил и нашел LinqKit, но я хочу не добавлять сторонних разработчиков только для этого. Но если мне нужно использовать LinqKit, легко ли его установить?