具有多个字符串的亚音速IN查询

时间:2009-10-05 19:33:53

标签: subsonic

我正在尝试使用包含多个字符串的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子句?

1 个答案:

答案 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)