所以我一直在敲打众所周知的墙壁几个小时,我想我会看到其他人是否已经解决了这个问题......
我有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上执行该部分执行时,它正在将处理推送到客户端。我是在这里生活在幻想的土地还是有办法实现这一目标?
答案 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')
子句。