Скомпилировано SQL не работает таким образом. Вы не можете поместить строку CSV в один параметр и заставить IN работать
Неправильно:
cmd.CommandText = "SELECT * FROM animal WHERE name IN (@param1)";
cmd.Parameters.Add("@param1", SqlDbParameter.Varchar).Value = "cat,dog,pig";
Он найдет только животное, имя которого точно равно cat,dog,pig
. Он не найдет кошку, собаку и свинью (3 ряда)
Справа:
cmd.CommandText = "SELECT * FROM animal WHERE name IN (@param1,@param2,@param3)";
cmd.Parameters.Add("@param1", SqlDbParameter.Varchar).Value = "cat";
cmd.Parameters.Add("@param2", SqlDbParameter.Varchar).Value = "dog";
cmd.Parameters.Add("@param3", SqlDbParameter.Varchar).Value = "pig";
Это так же, как вы не можете сделать это в c#:
int x = 1;
string add = "x = x + 1";
add; //it will not increment x! It's not a compiled statement, it's just data