用户可以在搜索框中输入以逗号分隔的ID列表。然后需要将其转换为以下SQL:
...
WHERE table.idCol = id1 OR table.idCol = id2 OR table.idCol = id3 ...
给定一个字符串数组我需要编写哪些EF代码来生成它?以下不起作用,因为它产生AND而不是
foreach (string idStr in idString.Split(','))
{
int id = int.Parse(idStr);
query = query.Where(t => t.idCol == id);
}
答案 0 :(得分:5)
为什么不使用Contains
,它将被翻译为IN
子句:
var idList = idString.Split(',').Select(int.Parse).ToList();
var query = table.Where(x => idList.Contains(x.idCol));