Subsonic IN Query с несколькими строками - PullRequest
0 голосов
/ 05 октября 2009

Я пытаюсь выполнить дозвуковой запрос с помощью оператора IN, содержащего несколько строк. Если я вручную жестко закодирую строки, он работает нормально. Пример:

Dim qry As New [Select]("mySelectColumn")
qry.From(table.Schema)
qry.Where(table.Columns.mycolumn).In("string1", "string2", "string3")

Однако мне нужно иметь возможность извлекать строки оператора IN из одной переменной в VB, что бы выглядело как последняя строка:

qry.Where(table.Columns.mycolumn).In(combinedString)

Но всякий раз, когда я пытаюсь объединить строки в одну строку VB, я не получаю результатов. Я даже не могу точно сказать, какой SQL он пытается передать. Использование buildsqlstatement () просто показывает оператор IN с: mycolumn0In1,: mycolumn0In2,: mycolumn0In3 ... Я не могу сказать, что на самом деле пытается сделать.

Я пробовал эти варианты для переменной VB безрезультатно: mystring = "" "mystring1" "," "mystring2" "" mystring = "'mystring1', 'mystring2'"

Любые идеи, как я могу объединить несколько строк в одном предложении IN с VB и Subsonic?

1 Ответ

1 голос
/ 06 октября 2009

Коллега указал мне на http://blog.levo.us/index.php/2008/06/25/subsonic-select-where-in-solution/, и я в конце концов нашел решение. Моя проблема заключалась в том, что я явно не объявлял переменную VB как arraylist. Я просто Dim'ировал его и присваивал ему результаты функции, которые были возвращены как ArrayList.

что не сработало - функция getstrings () возвращает ArrayList:

Dim myarraylist = getstrings()
...
qry.Where(table.Columns.mycolumn).In(myarraylist)

Что сработало:

Dim myarraylist as ArrayList = getstrings()
...
qry.Where(table.Columns.mycolumn).In(myarraylist)
...