LINQ-查找所有记录,其中给定列表中的所有项目都包含在icollection中

时间:2018-10-24 11:59:12

标签: c# list linq collections

我有一个过滤器列表,我想用它查询一个表,其中返回的项包含所有值,而不仅仅是一个。

该表称为“组织”,其中包含组织所针对的AgeGroups列表。

ptrace

OrgAgeGroup类在下面

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

最后,从复选框中选择的值存储在一个int列表中:

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

我正在使用以下代码选择包含任何selectedAges的所有组织:

List<int> selectedAges 

但是我不知道如何获取包含所有选定年龄的所有组织。将“全部更改为全部”似乎对搜索没有影响。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

以下查询应为您提供所需的内容。

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

您想要一个组织o,其中所有selectedAges s都包含在o的{​​{1}}的{​​{1}}的集合中