我有一张桌子公司。还有另一个表 CompanyTypes。
一家公司可以有多种类型。
我想搜索具有选择类型列表(加载到字符串列表中)的公司。
如果公司只有一种类型,我会这样做:
Where searchTypes.Contains(Company.Type)
但是我如何执行更复杂的查询以在另一个表中获取具有所需类型的公司?
我有一张桌子公司。还有另一个表 CompanyTypes。
一家公司可以有多种类型。
我想搜索具有选择类型列表(加载到字符串列表中)的公司。
如果公司只有一种类型,我会这样做:
Where searchTypes.Contains(Company.Type)
但是我如何执行更复杂的查询以在另一个表中获取具有所需类型的公司?
试试这个(从数据中获取 CompanyTypes 和 Companies):
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)));