实体框架' Where Or'用于多个用户指定的ID

时间:2015-01-29 12:29:37

标签: c# sql entity-framework entity-framework-6

用户可以在搜索框中输入以逗号分隔的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);
}

1 个答案:

答案 0 :(得分:5)

为什么不使用Contains,它将被翻译为IN子句:

var idList = idString.Split(',').Select(int.Parse).ToList();

var query = table.Where(x => idList.Contains(x.idCol));