передать объект оператору IN без одинарных кавычек

#sql #asp.net

#sql #asp.net

Вопрос:

 Select * from table_A WHERE name in (@nameObj)
  

Моя проблема в том, что я передаю этот объект из кода как

 @nameObj = "'"   "john"   "'"   ","   "'"   "joseph"   "'"
  

Итак, я хочу, чтобы мой окончательный запрос выглядел следующим образом:

 Select * from table_A WHERE name in ('john','joseph')
  

Но он выдает запрос, подобный этому:

 Select * from table_A WHERE name in ('''john'',''joseph''')
  

Комментарии:

1. Вы должны использовать параметры sql

2. @JuanCarlosOropeza, можете ли вы показать, как использовать параметры, если, например, вы заранее не знаете, сколько имен вы хотите использовать в предложении IN?

3. это будет динамический

Ответ №1:

Эта работа для меня

 sql = $@" AND Office IN ('{string.Join("','", new string[] { "aa", "bb"})}')";
  

Но вы должны передать это как параметр sql;

в sql-запросе у вас есть

 AND Office IN (@datain)
  

и в запросе вызова

 _dbContext.Offices.FromSql(sql,
                new NpgsqlParameter(
                     "@datain", 
                     $@"'{string.Join("','", new string[] {"aa", "bb"})}')")
                )
                .ToList();