我正在使用Dapper版本1.38.0.0开发MVC Web API。我写这段代码
var param = new Dapper.DynamicParameters();
foreach (Match match in Regex.Matches("Select Top @count * From tblCourse", @"(?<!\w)@\w+"))
{
string key = match.Value;
string value = HttpContext.Current.Request.QueryString[key.Replace("@", null)];
param.Add(key, value);
}
result = con.Query<dynamic>("Select Top @count * From tblCourse", param);
但是我在结果行上有错误。
Additional information: Incorrect syntax near '@count'.
我怎么解决这个问题?谢谢。
TOP @param
在SQL Server中不合法。 2个选项:
Select Top (@count) * From tblCourse
要么
Select Top {=count} * From tblCourse
第一个是SQL-server表示这种情况的方式。第二个是一个短小精悍的特性,它将整数值(仅对字符串不起作用)直接注入查询。如果值通常相同,则第二个通常会表现得更好。当然,第二个你也需要一个不同的正则表达式。
尝试这个
result = con.Query<dynamic>("Select Top (@count) * From tblCourse", param);
当通过参数提供值时, Top
需要在括号内