精简程序“ IN”子句不适用于多个值

Gre*_*gna 4 dapper

场景:

我的模型中有一个字符串属性,其中包含来自的ID MultiSelectList @Html.ListBox。如果选择两个列表项,则我的属性值将如下所示0100,0500

问题:

Dapper where子句仅适用于单个值:

CODE IN (@SomeCode) // for example, 0100 or 0500 returns results
CODE IN (@SomeCode) // 0100,0500 does not return results.
Run Code Online (Sandbox Code Playgroud)

von*_* v. 9

那是因为您不需要告诉Dapper使用括号()。它会自己做的很好。尝试这个:

var codes = new List<string> { "0100","0500"};
var sql = "select * from SomeTable where CODE IN @codes";
var items = connection.Query(sql, new { codes });
Run Code Online (Sandbox Code Playgroud)

  • 这是我最近遇到的最奇怪的问题之一。我收到“','附近的语法不正确”错误,并且无法弄清楚出了什么问题,因为 SQL 语法和参数绑定似乎是正确的。找到这个答案并删除括号(@ids)以简单地@ids后,此错误已解决。真的很奇怪o_O。感谢您分享知识! (2认同)