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



我有一个表格公司。和另一个表公司类型。

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

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

如果公司只有一种类型,我会执行以下操作:

Where searchTypes.Contains(Company.Type)

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

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

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)));

最新更新