Search code examples
.netsqldapper

SELECT * FROM X WHERE id IN (...) with Dapper ORM


What is the best way to write a query with IN clause using Dapper ORM when the list of values for the IN clause is coming from business logic? For example let's say I have a query:

SELECT * 
  FROM SomeTable 
 WHERE id IN (commaSeparatedListOfIDs)

The commaSeparatedListOfIDs is being passed in from business logic and it can be any type of IEnumerable(of Integer). How would I construct a query in this case? Do I have to do what I've been doing so far which is basically string concatenation or is there some sort of advanced parameter mapping technique that I'm not aware of?


Solution

  • Dapper supports this directly. For example...

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

    unless you are using Postgres, in which case see this answer