1. ホーム
  2. .net

[解決済み】SELECT * FROM X WHERE id IN (...) with Dapper ORM

2022-04-03 17:42:20

質問

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を使用している場合は、以下の項目を参照してください。 この回答