-1

我正在尝试使用 Dapper SQL 构建器构建动态 WHERE 子句。这适用于除 BETWEEN 之外的所有情况。用 BETWEEN 尝试了以下方法(就像 IN 子句一样

SqlBuilder sqlBuilder = new SqlBuilder();
var sqlTemplate = sqlBuilder.AddTemplate(@"Select * from tbl_example /**Where**/");
sqlBuilder.Where(@"Col BETWEEN @colparam", new { paramValue });
con.Query(sqlTemplate.RawSql, sqlTemplate.Parameters);

使用 SQL Profiler 时,我观察到从 dapper 生成的查询看起来像

Select * from tbl_example Where Col BETWEEN (@colparam1,@colparam2)

笔记:

  1. paramValue是我通过 API 接收的整数数组
  2. 我明白这可以写成Col BETWEEN @colparam1 AND @colparam2或用 < 和 > 替换 BETWEEN
4

1 回答 1

0

如您所知,BETWEEN 需要两个参数(@colparam1 AND @colparam2),但您只传递了一个参数(@colparam)。

假设您的数组正好包含边界(最小值和最大值),试试这个:

sqlBuilder.Where(@"Col BETWEEN @val1 AND @val2", new { val1 = paramValue[0], val2 = paramValue[1] });
于 2020-08-31T00:45:58.517 回答