我尝试使用linq查询根据帐户ID动态选择记录。 account id是sql server中的int列。
var idList = new int[123, 456]; //these number change with each user.
foreach (var id in idList) {
query = query.WHERE(cs => cs.pkID = id);
}
以上使它成为AND where子句。我宁愿让它成为一个OR。 上面的idList可以包含1到100.与每个用户不同。
如何使linq与OR子句一起使用。包含不适用于INT列。
希望选择看起来像这样。
select * from table where id = 123 or id = 456
我有一堆其他列可以附加到where子句。让动态的OR工作让我头疼。
感谢。
答案 0 :(得分:2)
您可以使用cs=>idList.Contains(cs.pkID)
var idList = new List<int>(){123, 456};
var result = query.Where(cs => idList.Contains(cs.pkID));
这样你就不需要任何循环,它相当于:
SELECT somecolumns FROM sometable WHERE pkId in (123, 456)
在您的情况下,使用Contains比使用OR
创建动态where子句更有意义。
答案 1 :(得分:0)
query = query.WHERE(cs => idList.Contains(cs.pkID);
你可以使用类似的东西。
使用原始查询观看我们:=在C#中不是==。