当IN子句的值列表来自业务逻辑时,使用Dapper ORM编写带有IN子句的查询的最佳方法是什么?例如,假设我有一个查询:

SELECT * 
  FROM SomeTable 
 WHERE id IN (commaSeparatedListOfIDs)

commaSeparatedListOfIDs是从业务逻辑传入的,可以是任何类型的IEnumerable(of Integer).在这种情况下,我将如何构造查询?我必须做我到目前为止一直在做的事情,基本上是字符串连接,还是有一些高级的参数映射技术,我不知道?

推荐答案

Dapper直接支持这一点.例如

string sql = "SELECT * FROM SomeTable WHERE id IN @ids"
var results = conn.Query(sql, new { ids = new[] { 1, 2, 3, 4, 5 }});

除非你使用的是Postgres,在这种情况下,请参见this answer

Sql相关问答推荐

LAG函数通过丢弃空值返回前一行

前面的语句不喜欢AND LIKE?当try 更新使用ID和日期过滤的表时

从自定义日期和时间开始,每月具有给定状态的公司数量

PostgreSQL中的合并命令是原子的,还是需要一些类似于SQL Server版本的内容?

如何在snowflake中进行SQL的反向填充

不同表达方式时的大小写

找到最新的连线

从数据库中查找总和大于或等于查询中的数字的数字

Redshift PL/pgSQL循环中的参数化列名

按属性值 Select 数组元素Postgres Jsonb

两个月之间的WHERE CASE WHEN-ORA-00905:缺少关键字

根据时间值提取记录

Select 一个非零值减少重复

给定 3 个键列,从一个表中 Select 另一表中不存在的所有数据

SQL 中的第一个值和倒数第二个值

MS ACCESS 错误插入 X(...) 从 A 联合 Select ... 从 B

编写查询以根据级别 (p2) 返回父位置

获取 SQL Server 中每一行的两个-之间的文本

在 PostgreSQL 中使用重音敏感排序进行重音不敏感搜索

PostgresQL-根据另一列找到 3 个最低值