[英]How should I pass an array to the FIELD statement using Dapper, c#
我正在尝试使用 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();
}
此查询只是执行 Order By Id。 我还传入了 param = Ids。 还是不行。
根据这个问题SELECT * FROM X WHERE id IN (...) with Dapper ORM你应该能够用 dapper 做一个WHERE in
,但数组中项目数量的限制是需要注意的。
然后,您还可以打破ORDER BY FIELD
SQL 并使用 linq 对结果执行OrderBy
。
编辑:这行得通吗?
Guid[] myArr = Ids.ToArray(); // Ids are List<Guid>
var script = @"SELECT * FROM table WHERE Id in @Ids)";
using (var connection = database.Connection)
{
var myDataTypeObjects = connection.Query<MyDataType>(script, new {Ids = Ids}).ToList();
myDataTypeObjects = myDataTypeObjects.OrderBy(x => Ids.IndexOf(x.Id)).ToList();
return myDataTypeObjects;
}
将列表转换为 dapper 参数列表中的数组。
var sqlQuery = "Select * from table Where Columnname IN @periodIdStr";
var result = dapperUOW.Connection.Query<Entity>(sqlQuery ,
param: new { periodIdStr = periodIds.ToArray() }, transaction: dapperUOW.Transaction).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.