0

我需要创建一个 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 中的每个项目运行一次上述查询并聚合结果。

任何帮助表示赞赏。

谢谢。

4

2 回答 2

1

多个from语句将通过每个组合,有点像嵌套foreach语句:

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

有趣的是,这被翻译成SelectMany类似于 Arithmomaniac 的答案的陈述。

于 2012-07-06T14:37:42.593 回答
0

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

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

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

于 2012-07-06T05:20:13.943 回答