У меня есть много-ко-многим, как это:LINQ все не работает, как ожидалось при использовании Содержит
организации (OrganisationID, Имя)
Категории (CategoryID, имя)
Organisations_Categories (OrganisationID, CategoryID)
Я пытаюсь получить список организаций, которые принадлежат все категорий, которые получают переданные в качестве параметра
например Если 10 организаций принадлежат CategoryID = 1 и 0 Организации принадлежат CategoryID = 2, и я передаю в [1,2] в качестве параметра CategoryID, 0 Организации должны быть возвращены, потому что 0 Организации принадлежат как CategoryID = 1, так и CategoryID = 2
Вот код до сих пор:
int[] catIdsSelected = ((catIds.Length > 0) ? Array.ConvertAll(catIds.Split(','), int.Parse) : new int[0]);
if (catIdsSelected.Length > 0)
{
orgs = orgs.Where(l => l.Categories.Any(m => catIdsSelected.AsQueryable().Contains(m.CategoryID)));
}
Однако это возвращает список организаций, которые принадлежат любой из категорий прошел в
Я попытался заменить «Любой» с «Все» без успеха
Пожалуйста, попробуйте использовать Список catIdsSelected = .... и скажите мне результат. –
Просто попробовал сделать его списком вместо IQueryable - тот же результат – user982119
@ user982119, попробуйте изменить, где условие: 'orgs = orgs.Where (l => catIdsSelected.AsQueryable(). Все (ID => l.Categories.Any (ct => ct.CategoryID == ID))); ' – ASh