2013-10-14 56 views
0

我有一个表公司。和另一个表CompanyTypes。Linq to SQL - 匹配列表到另一个列表

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

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

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

Where searchTypes.Contains(Company.Type) 

但如何执行更复杂的查询来获取企业与另一个表所需的类型?

+0

我想你可能需要给更多的细节(即使你更改名称掩盖机密信息)。那么最有可能出现的解决方案就是使用join关键字。 – philologon

回答

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

查询提供者是否能够翻译这样的查询? – Servy

相关问题