Я использую Dapper, чтобы делать выборочные проверки по базе данных DB2 (с диском ODBC).Когда я включаю одно предложение "WHERE IN", оно работает правильно:
//Works!
var p = new DynamicParameters();
var list = new float[] { 0.35f, 0.36f, 0.37f };
p.Add("ids", list);
string query = $"select * from {_table} where FIELD1 in ?ids?";
return WithConnection(c => c.Query<Entity>(query, p));
Однако, если я включаю другое предложение WHERE IN, я не получаю ожидаемый результат:
//Unexpected result (I should get 2 elements but returns empty)
var p = new DynamicParameters();
var list = new float[] { 0.35f, 0.36f, 0.37f };
var list2 = new int[] { 2423634, 2423635, 2423636, 2423637, 2417456 };
p.Add("ids", list);
p.Add("ids2", list2);
string query = $"select * from {_table} where FIELD1 in ?ids? and FIELD2 in ?ids2?";
return WithConnection(c => c.Query<Entity>(query, p));
Более того, если я использую предложение WHERE IN и простое условие, я получаю ошибку:
//Error Error: [SQL0302] Data conversion or data mapping error.
// Cause . . . . . : Error type 6 has occurred. Error types and
// their meanings are: ... 6 -- Numeric data that is not valid. ...
var p = new DynamicParameters();
var list = new float[] { 0.35f, 0.36f, 0.37f };
int id = 2423634;
p.Add("ids", list);
p.Add("id", id);
string query = $"select * from {_table} where FIELD1 in ?ids? and FIELD2 = ?id?";
return WithConnection(c => c.Query<Entity>(query, p));
Если я использую условие без WHERE IN, оно работает правильно.
Являюсь ли яделать что-то не так или это может быть ошибка в Dapper?(Я думаю, что была похожая ошибка при использовании предложений WHERE IN, решенных в версии 1.50.2).
Заранее спасибо.