Как изменить функцию объединения на функцию вырезания? C # LINQ - PullRequest
0 голосов
/ 06 июля 2018

Сессия получает данные в виде списка улиц. * Существует таблица улиц, таблица стран и таблица, которая связывает страны с улицами.

Теперь функция показывает мне все страны, в которых есть одна или несколько улиц, которые функция получила в качестве входных данных. Мне нужно изменить функцию, чтобы она отображала только страны, где все улицы функция получила в качестве входных данных.

Я был бы рад, если бы кто-нибудь помог мне с изменением функции.

Спасибо

 entities
   .Countries
   .Where(c => c.Streets
     .Select(s => s.Id)
     .Intersect(streetsIDs)
     .Any());

1 Ответ

0 голосов
/ 06 июля 2018

Возьмите ввод streetsIDs и извлеките каждый элемент, равный любому элементу в Country.Street.Id s (Except делает это). Если весь элемент извлечен, значение streetsIDs является подмножеством Country.Street.Id s

entities
.Countries
.Where(c =>
    !streetsIDs
     .Except(c.Streets.Select(s => s.Id))
     .Any());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...