Linq查询运行参数列表

时间:2012-07-05 23:26:08

标签: c# .net linq

我需要创建一个linq查询,从数据库表中选择某个功能结果为真的数据。

我正在使用linq-to-sql并且该功能运行良好,我可以编写一个基本查询来获取数据。

我的问题是我有一个内存参数列表,我基本上需要多次运行linq查询(每个参数列表项一次)并聚合结果。

我尝试使用.Any()作为连接,但linq不喜欢将非数据库结果集与数据库结果集一起使用。

一些示例代码:

Parameter list: // lets call it "l"
{    
 One,
 Two,
 Three
}

查询

From w in words where funcWord(l.item) == true select w;

所以我需要一个可以为l中的每个项运行上述查询一次的查询并聚合结果。

感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

多个from语句将遍历每个组合,有点像嵌套的foreach语句:

from item in list
from w in words
where funcWord(item, w.name) == true
select w;

有趣的是,这被转换为SelectMany语句,类似于Arithmomaniac的回答。

答案 1 :(得分:0)

尝试SelectMany,它汇总了一对多函数的结果,应用于每个成员。

在这种情况下,成员是list的元素,而一对多函数是您的上述l - 依赖查询(尽管我将其重写为lambda函数。)

list.SelectMany(l => words.Where(w => funcWord(l.item, w.name)));