我正在尝试使用包含多个字符串的IN语句执行Subsonic Query。如果我手动硬编码字符串,它工作正常。例如:
Dim qry As New [Select]("mySelectColumn")
qry.From(table.Schema)
qry.Where(table.Columns.mycolumn).In("string1", "string2", "string3")
但是,我需要能够从VB中的单个变量中提取IN语句字符串,这将使最后一行看起来像:
qry.Where(table.Columns.mycolumn).In(combinedString)
但是每当我尝试将字符串连接成一个单独的VB字符串时,我都没有得到任何结果。我甚至无法准确地说出它试图传递的SQL。使用buildsqlstatement()只显示IN语句:mycolumn0In1,:mycolumn0In2,:mycolumn0In3 ......我无法分辨它实际上要做什么。
我已经尝试过VB变量的这些变化无济于事: mystring =“”“mystring1”“,”“mystring2”“” mystring =“'mystring1','mystring2'”
如何使用VB和Subsonic将多个字符串连接成一个IN子句?
答案 0 :(得分:1)
一位同事指着我http://blog.levo.us/index.php/2008/06/25/subsonic-select-where-in-solution/,我终于找到了解决方案。我的问题是我没有明确地将VB变量声明为arraylist。我只是对它进行Dim'ing并将其分配给一个函数的结果,该函数作为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)