Linq to SQL - 匹配列表到另一个列表

时间:2013-10-14 17:21:41

标签: c# .net linq linq-to-sql

我有桌子公司。另一个表是CompanyTypes。

一家公司可以有多种类型。

我想搜索具有选择类型列表的公司(加载到字符串列表中)。

如果公司只有一种类型,我会这样做:

Where searchTypes.Contains(Company.Type)

但是我如何执行更复杂的查询以在另一个表中获得具有所需类型的公司?

1 个答案:

答案 0 :(得分:1)

试试这个(从数据中获取CompanyTypes和公司):

IEnumerable<string> companyTypes = data.CompanyTypes; // filter this as needed
IEnumerable<Company> companiesOfType = data.Companies.Where(c => c.Types.Any(t => companyTypes.Contains(t)));

这将使您拥有至少拥有一种已过滤公司类型的所有公司。如果您希望所有所有过滤公司类型的公司,您可以这样做:

IEnumerable<string> companyTypes = data.CompanyTypes; // filter this as needed
IEnumerable<Company> companiesOfType = data.Companies.Where(c => c.Types.All(t => companyTypes.Contains(t)));