2011-02-23 14 views
1

我想循环访问我的数据表列SDESCR并创建一个看起来像这样的字符串。循环通过数据表来创建一个看起来像这样的字符串

Dim labels As String() = {"North", "South", "East", "West", "Up", "Down"} 

这就是我试图和它不工作

Dim labels As String() 
For Each row As DataRow In tablegraph.Rows 
      labels = labels " ' " + row.Item("SDESCR") + " '," 
     Next row 

感谢你的帮助,我会测试他们明天看哪个效果最好,MARK ONE正确的。

+3

'labels'不是一个字符串而是一个String数组。 – 2011-02-23 22:03:04

+0

你是什么意思“它不工作”?你有错误吗?你会得到输出,但输出错误吗?另外,我认为这是一种类型,但你有'标签''',我假定你的意思是'标签+'''''。 – 2011-02-23 22:04:46

回答

2

做到这一点,而不是

Dim labels As String() 
Dim labelsList As List(Of String) = New List(Of String) 
For Each row As DataRow In tablegraph.Rows 
    labelsList.Add(row.Item("SDESCR")) 
Next 

labels = labelsList.ToArray() 

如果你需要它是一个逗号分隔的列表,而不是你可以做

Dim commaLabels As String = String.Join(labels, ",") 
0
labels = labels " ' " + row.Item("SDESCR") + " '," 
      ^

加号丢失? 另外,当你这样做时,你会在字符串的末尾留下额外的,。所以你会想剥去它。

+0

如果我添加一个加号,我得到一个错误其错误运算符'+'没有为类型'字符串'和'字符串'的一维数组定义。 – MyHeadHurts 2011-02-23 22:05:46

1

如果你需要它们存储在数组中,那么你可以将它们添加到一个列表,然后调用列表上的ToArray的()方法:

Dim labelList As New List(Of String) 
    For Each row As DataRow In tablegraph.Rows 
     labelList.Add(row.Item("SDESCR")) 
    Next row 

    Dim labels As String() = labelList.ToArray() 
1

如果你的意思是一个String数组,而不是一个字符串,TH是的作品:

Dim labels(tablegraph.Rows.Count - 1) As String 
For i As Int32 = 0 To tablegraph.Rows.Count - 1 
    labels(i) = tablegraph(i)("SDESCR").ToString 
Next 

如果你想用逗号将它们分开,你可以使用StringBuilder追加:

Dim labels As New System.Text.StringBuilder 
For i As Int32 = 0 To tablegraph.Rows.Count - 1 
    labels.Append(" ' ").Append(tablegraph(i)("SDESCR").ToString).Append(" ',") 
Next 
If labels.Length <> 0 Then labels.Length -= 1 'remove last comma' 
Dim labelString As String = labels.ToString 
1

如果你想有一个字符串,用这个(字符串生成器是最好的,由于内存管理问题与常量字符串声明。

Dim labels As New StringBuilder() 
For Each row As DataRow In tablegraph.Rows 
      labels.Append(" ' " + row.Item("SDESCR") + " ',") 
     Next row 

然后,当你需要的字符串,使用labels.ToString()

如果你想要一个数组,当你需要的阵列,使用用这个...

Dim labels As New List(Of String)() 
For Each row As DataRow In tablegraph.Rows 
      labels.Add(row.Item("SDESCR")) 
     Next row 

然后ToArray()

上面的代码失败的主要原因是您正在声明一个字符串数组。

1

有很多方法可以做到这一点;这里是使用LINQ

Dim labels As String() = (From myRow In tablegraph _ 
          Select CType(myRow.Item("SDESCR"), String)).ToArray 
  • 值得什么,这会为“SDESCR”的空/ NOTHING值失败的方法。

如果你只是想要一个逗号分隔值,你可以这样做:

Dim sOutput = String.Join(",", (From myRow In tablegraph _ 
           Select CType(myRow.Item("SDESCR"), String)).ToArray) 
相关问题