带有参数列表的Dapper查询

Jar*_*rod 14 c# mysql database dapper

我正在尝试使用Dapper运行一个具有已知参数集的查询,但是使用这些参数的值列表.我想要做的一个简单例子是:

DateTime endDate = DateTime.Now;
DateTime startDate = endDate.AddHours(-24);

string query = "select COUNT(*) from Test where Status = @Status AND DateCreated <= @Hour;";
var stuff = con.Query(query, (startDate).ByHourTo(endDate).Select(hour => new
{
     Status = 1,
     Hour = hour,
}));
Run Code Online (Sandbox Code Playgroud)

Dapper抛出一个异常'参数'@Status'必须定义'.我知道Dapper在进行批量插入和更新时可以处理参数列表,但它是否可以不进行选择?

Red*_*ter 18

试试这个:

List<string> names = new List<string> { "Bob", "Fred", "Jack" };
string query = "select * from people where Name in @names";
var stuff = connection.Query<ExtractionRecord>(query, new {names});
Run Code Online (Sandbox Code Playgroud)


Mar*_*ell 10

啊,我想我明白你的意思了......

是的,我们支持的方案Execute不支持Query,具体来说:使用一系列不同的参数值顺序运行相同的操作.这有意义Execute,但对于查询,它可能意味着您应该使用查看不同的查询in.或者,只需循环和连接.

相反,它正在查看单个参数对象并查找公共值 - 可枚举的dapper没有任何合适的参数值.