Передать список строк в качестве параметра в параметризованном запросе в DocumentDB

Есть ли способ передать список строк в SqlParameter, скажем, у меня есть 10 авторов, и я хочу найти книги, опубликованные ими. Я знаю, что могу сделать 10 параметров в (новом SqlParameter) отдельно. Но есть ли способ просто передать список и получить результаты.

IQueryable<Book> queryable = client.CreateDocumentQuery<Book>(collectionSelfLink,
            new SqlQuerySpec
            {
                QueryText = "SELECT * FROM books b WHERE (b.Author.Name = @name)", 
                Parameters = new SqlParameterCollection() 
                { 
                      new SqlParameter("@name", "Herman Melville")
                }
            });   

person himanshu kaushal    schedule 23.03.2016    source источник


Ответы (1)


Я думаю, что вы ищете ключевое слово SQL IN, см. эта ссылка для получения дополнительной информации.

Пример использования:

SELECT *
FROM books
WHERE books.Author.Name IN ('Helena Petrovna Blavatsky', 
'Hermes Trismegistus', 'Heinrich Cornelius Agrippa')
person Community    schedule 23.03.2016
comment
Можно ли передать эту вещь «Елена Петровна Блаватская», «Гермес Трисмегист», «Генрих Корнелий Агриппа» в качестве параметра в параметрах, потому что я пытаюсь избежать инъекции sql, я хочу передать список строк в параметрах, может ли это произойти ? - person himanshu kaushal; 28.03.2016
comment
@himanshukaushal Ключевое слово SQL IN еще не поддерживается в поставщике Linq DocumentDB, насколько мне известно, см. stackoverflow.com/questions/30870123/ . Обходной путь, пока они не будут поддерживать ключевые слова IN, будет заключаться в выполнении SQL-запроса, как указано выше, и вы можете передать список элементов массива, разделенных запятыми, используя метод String.Join(",", authorsArray). - person ; 28.03.2016