如何使用List<>作为我与Linq的where子句的条件?

时间:2009-01-11 02:22:08

标签: c# sql-server linq

所以我一直在敲打众所周知的墙壁几个小时,我想我会看到其他人是否已经解决了这个问题......

我有List<string>个值,我想将其用作搜索过滤器。在过去,我会在查询中构建一个WHERE field = 'a' OR field = 'b' OR field = 'C'字符串。但是对于Linq建筑来说,长WHERE条款相当困难。我希望能起作用的是:

var results = from x in x.table
              where x.Equals(List<string>)
              select x;

唉,编译器不够聪明,无法分解List&lt;&gt;进入WHERE field = 'a' OR field ='b'种查询。我已经将此过程作为List<string>上的foreach循环继续前进,但当我希望在SQL Server上执行该部分执行时,它正在将处理推送到客户端。我是在这里生活在幻想的土地还是有办法实现这一目标?

1 个答案:

答案 0 :(得分:6)

您可以使用Contains()

List<string> yourList = new List<string> { "A", "B", "C" };

var results = from x in x.table
              where yourList.Contains(x)
              select x;

如果它是Linq to SQL,它将生成WHERE field IN ('A', 'B', 'C')子句。