Linq其中IN使用方法语法

时间:2014-09-03 05:47:45

标签: linq where

我一直在努力让这个人上班,我的大脑被枪杀......希望有人可以帮忙。

我有一个名为Company的表,它是从查询返回的主要实体。公司表通过表CompanyCategory链接到名为Category的表。类别表有2个与此相关的字段:名称和含义。这些字段在一行中包含相同的数据...即... Name =“Marketing”和含义=“营销”。这允许我按意义查询,而显示名称可能在将来发生变化。我将始终通过含义查询类别表,然后显示名称。

由于公司可以包含1到多个类别,有时候我想要归还所有拥有一组类别的公司....比如......所有与营销或公共关系相关的公司。这是我现在的查询,它返回所有只有我想要的数据的公司。

IQueryable<ICompanyModel> q = base.Context.Set<KD.CompanyAdventures.Data.Implementation.Company>()
    .Include(x => x.Address.City.FirstAdminDivision)
    .Include(x => x.CompanyBioInfoes)
    .Select(x => new CompanyModel
    {
        CompanyId = x.CompanyId,
        Name = x.Name,
        BusinessPhone = x.BusinessPhone,
        PrimaryEmail = x.PrimaryEmail,
        WebsiteUrl = x.WebsiteUrl,
        LogoUrl = x.LogoUrl,
        Address = new AddressModel
        {
            AddressId = x.AddressId,
            Address1 = x.Address.Address1,
            Address2 = x.Address.Address2,
            PostalCode = x.Address.PostalCode,
            City = new CityModel
            {
                CityId = x.Address.City.CityId,
                Name = x.Address.City.Name,
                FirstAdminDivision = new FirstAdminDivisionModel
                {
                    FirstAdminDivisionId = x.Address.City.FirstAdminDivision.FirstAdminDivisionId,
                    Name = x.Address.City.FirstAdminDivision.Name
                }
            }
        }
    });

我正在将List<string>传递给具有此LINQ查询的方法(GetCompanies),我需要过滤那些传入的类别含义列表返回的公司。我已经能够使用以下(其中列表1 =所有员工(我的妻子和孩子的名字),列表2只是我孩子的名字),使用以下2个简单列表进行测试:

IQueryable<string> adultEmployees = employees.Where(emp => !kids.Contains(emp.ToString())).AsQueryable();

但是我无法将其与公司和类别示例一起使用,因为我无法弄清楚如何深入研究复杂对象的含义......即......不是字符串列表。< / p>

LINQ查询使用的对象类如下所示:

CompanyModel [ CompanyId, CompanyName, List<CategoryModel> ]
CategoryModel [ CategoryId, Name, Meaning ]

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

假设meanings是一个包含&#34; marketing&#34;的列表。和&#34;公共关系&#34;。如果我理解正确,您可以让公司CategoryModels Meaning等于&#34;营销&#34;或者&#34;公共关系&#34;像这样:

companies.Where(c => c.CategoryModels.Any(cm => meanings.Contains(cm.Meaning)))