Задать вопрос
@anton_mra
Web-программист

Как вместо выборки И сделать ИЛИ?

У меня есть запрос, а в нём фильтр
5ca5f539bda6e865867710.png
Competenies фильтрует людей таким образом, чтобы ВСЕ компетенции были у людей, но мне нужно, чтобы хотя бы одна была у человека.
public IEnumerable CompetencyIds => this.CompetencyId.ParseIntArray();
Я пробовал так
qpeople = qpeople.Where(x => x.CompetencyAssignments.Any(ca => ca.CompetencyId == filter.CompetencyIds.SingleOrDefault()));
Но это вызвало ошибку.
Помогите новичку, пожалуйста:)
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
MrMureno
@MrMureno
VR for all
уж простите LINQ немного не мое, но банально по логике
вы в цикле выбираете список людей(из уже отфильтрованного на прошлом шаге цикла) - людей с нужным признаком.
по сути каждый раз отсекая все больше и больше людей.

а надо один раз найти людей, у которых есть хотя бы один признак.
так что правильно по сути делали создав список всех "компетенций"

а потом проверить бы
qpeople = qpeople.Where(x => x.CompetencyAssignments.Any(ca =>filter.CompetencyIds.Contains(ca.CompetencyId));

и без цикла. просто выбрали людей) если и вправду надо чтоб "если хотя бы что то из требуемого списка присутствует)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@John_Nash
coder
чтобы ВСЕ компетенции были у людей, но мне нужно, чтобы хотя бы одна была у человека.

qpeople.Where(x =>условие1 || условие2)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы