LINQ - Найти все записи, где все элементы в данном списке содержатся в коллекции - PullRequest
0 голосов
/ 24 октября 2018

У меня есть список фильтров, и я хочу использовать его для запроса таблицы, в которой возвращаемые элементы содержат ВСЕ значения, а не только одно.

Таблица называется Организация и содержит список возрастных групп.Организация нацелена на.

public class Organisation
{
public int OrganisationID { get; set; }
public string OrgName { get; set; }
public ICollection<OrgAgeGroup> AgeGroupCollection { get; set; }
}

Класс OrgAgeGroup находится ниже

public class OrgAgeGroup
    {
        public int OrgAgeGroupID { get; set; }
        public int OrganisationID { get; set; }
        public int AgeGroupID { get; set; }
    }

И, наконец, выбранные значения из флажков сохраняются в int List:

List<int> selectedAges 

Я использую следующий код для выбора всех организаций, которые содержат любой из выбранных возрастов:

IQueryable<Organisation> orglist = GetAllOrgs();

 orglist = orglist.Where(o => o.AgeGroupCollection.Any(l => selectedAges.Contains(l.AgeGroupID)));

, но я не могу понять, как получить все организации, которые содержат все выбранные возрасты.Изменение любого на все, кажется, не влияет на поиск.Есть идеи?

1 Ответ

0 голосов
/ 24 октября 2018

Следующий запрос должен дать вам то, что вы хотите.

orglist = orglist.Where(
    o => selectedAges.All(
        s => o.AgeGroupCollection
            .Select(l => l.AgeGroupID)
            .Contains(s)));

Вы хотите организации o, где все selectedAges s содержатся в коллекции o 's AgeGroupCollection * AgeGroupId с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...