Entity Framework 'Where Or' 用于多个用户指定的 ID
Entity Framework 'Where Or' for multiple user specified IDs
用户可以在搜索框中输入以逗号分隔的 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);
}
为什么不直接用Contains
,会被翻译成IN
子句:
var idList = idString.Split(',').Select(int.Parse).ToList();
var query = table.Where(x => idList.Contains(x.idCol));
用户可以在搜索框中输入以逗号分隔的 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);
}
为什么不直接用Contains
,会被翻译成IN
子句:
var idList = idString.Split(',').Select(int.Parse).ToList();
var query = table.Where(x => idList.Contains(x.idCol));