开发者

loop through datatable to create a string that looks like this

开发者 https://www.devze.com 2023-02-13 05:30 出处:网络
I want to loop through my datatable column called SDESCR and created a string that looks like this. Dim labels As String() = {\"North\", \"South\", \"East\", \"West\", \"Up\", \"Down\"}

I want to loop through my datatable column called SDESCR and created a string that looks like this.

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

this is wh开发者_如何学Pythonat i am trying and it is not working

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

THANK YOU FOR THE HELP, I WILL TEST THEM TOMORROW AND SEE WHICH WORKS BEST AND MARK ONE CORRECT.


Do this instead

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()

If you need it to be a comma delimited list instead you can just do

Dim commaLabels As String = String.Join(labels, ",")


If you need them stored in an array, then you can add them to a list and then call the ToArray() method on the list:

    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()


If you want a string, use this (string builder is best due to memory management issues with constant string declaration.

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

Then when you need the string, use labels.ToString()

If you want an array, use this...

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

Then when you need the array, use labels.ToArray()

The main reason your above code is failing is that you are declaring an Array of strings.


If you mean a String-Array instead of a String, this works:

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

If you want them separated with a comma, you can use a StringBuilder to append:

 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 


There are plenty of ways to do this; here is an approach using LINQ

Dim labels As String() = (From myRow In tablegraph _
                          Select CType(myRow.Item("SDESCR"), String)).ToArray
  • It's worth nothing that this will fail for NULL/NOTHING values of "SDESCR".

If you just want a single comma-separated values you can do this:

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


labels = labels " ' " + row.Item("SDESCR") + " ',"
               ^

Plus sign missing? Also, when you do this you'll be left with an extra , at the end of your string. So you'll want to strip that off.

0

精彩评论

暂无评论...
验证码 换一张
取 消