包括将数组字符串转换为“其中GTID in(arrayname)”子句

时间:2013-11-08 07:37:22

标签: c# asp.net .net sql vb.net

我在GTIDArr

中有一系列字符串

Letus说GTID={"CODE1","CODE2","CODE3"}

我想从以下具有GTID的查询中获取数据库中的记录。

因此我做了以下事情:

Dim sqlTransferExcel As String = " select gt.GTID ,gt.TransferDate ,pl.LocationName as FromLocation,Pto.LocationName as ToLocation,gt.TransferedMode ,gt.TransferedDetails ,gt.Remarks ,p.ProductName+case when c.CategoryName IS null then '' else  '-'+c.CategoryName end as PName,gd.QtyTransferred  " _
                                      & " from dbo.GoodTransferDetails gd Left outer join ProductMaster p on gd.ProductID =p.ProductID " _
                                      & " Left Outer join CategoryMaster c on gd.CategoryID =c.CategoryID " _
                                      & " Left Outer join dbo.GoodTransfer gt on gt.GTID=gd.GTID  " _
                                      & " Left Outer join  PescaLocation pl on  gt.FromPescaLocation =pl.PLID " _
                                      & " Left Outer join PescaLocation Pto  on gt.ToPescaLocation =pto.PLID " _
                                      & " where gd.GTID in ( '" & GTIDArr() & "' ) order by p.OrderID  "

但它给出了我在条件为

的最后一行的错误
  

错误101索引数小于维数   

索引

如何在此查询中包含字符串数组?

3 个答案:

答案 0 :(得分:2)

例如,您可以使用Join中的String方法:

String.Join(", ", GTIDArr)

如果您需要引用数组中的每个元素,请尝试:

"'" & String.Join("', '", GTIDArr) & "'"

答案 1 :(得分:1)

哟可以使用LINQ

来做到这一点
string Command= string.Empty;
 Command= string.Join(",", ArrayListName.Cast<string>().Select(x => x.ToString()).ToArray()); // If it is INT Type
 Command= string.Join("','", ArrayListName.Cast<string>().Select(x => x.ToString()).ToArray()); // If it is String

希望这会对你有所帮助。

答案 2 :(得分:1)

你不能直接使用数组&amp;在这个sql语句中使用&amp;在你的数组中,所以你首先必须转换为字符串,然后你必须使用.see下面的代码,你很容易找到解决方案:

Dim GTIDArr As String() = {"CODE1", "CODE2", "CODE3"}

Dim value As String = String.Join(",", GTIDArr)

Dim sqlTransferExcel As String = " select gt.GTID ,gt.TransferDate ,pl.LocationName as FromLocation,Pto.LocationName as ToLocation,gt.TransferedMode ,gt.TransferedDetails ,gt.Remarks ,p.ProductName+case when c.CategoryName IS null then '' else  '-'+c.CategoryName end as PName,gd.QtyTransferred  " _
  & " from dbo.GoodTransferDetails gd Left outer join ProductMaster p on gd.ProductID =p.ProductID " _
  & " Left Outer join CategoryMaster c on gd.CategoryID =c.CategoryID " _
  & " Left Outer join dbo.GoodTransfer gt on gt.GTID=gd.GTID  " _
  & " Left Outer join  PescaLocation pl on  gt.FromPescaLocation =pl.PLID " _
  & " Left Outer join PescaLocation Pto  on gt.ToPescaLocation =pto.PLID " _
  & " where gd.GTID in ( '" & value & "' ) order by p.OrderID  "