【发布时间】:2019-05-09 19:59:09
【问题描述】:
我正在尝试使用 Dapper 将数组作为参数传递。 我的值数组必须进入 FIELD 部分。
我试图将数组元素加入一个字符串并传递它。还是不行。
Guid[] myArr = Ids.ToArray(); // Ids are List<Guid>
var script = @"SELECT * FROM table WHERE Id in @Ids ORDER BY FIELD(Id, @param)";
using (var connection = database.Connection)
{
return connection.Query<MyDataType>(script, new {Ids = Ids, param = myArr}).ToList();
}
此查询只是按 ID 进行排序。我还传入了 param = Ids。还是不行。
【问题讨论】:
-
有趣;简短的版本是“这是我第一次看到这种语法,因此 Dapper 目前不支持它” - 所以:现在没什么好。
-
当我将值加入字符串时,我得到“'1','2','3'”。我想去掉开头和结尾的双引号;所以我使用了 .Trim('"')。无法让它工作
-
你确定那些双引号不仅仅是调试器“有用”吗?它尝试将文本格式化为合法的 C# 语法,这意味着它会添加引号并转义有问题的字符,这两个问题在 Stack Overflow 上都有大量的问题。