如何将数据表列转换为VB.Net中的字符串列表

时间:2019-04-24 16:40:14

标签: vb.net list datatables

我有一个数据表,其中有一列。我想使用该“数据表”列,然后将其直接转换为字符串列表。

我尝试使用For Each循环获取每个数据行项目并将其写入字符串列表,但是当我在使用Write Line之后查看输出时,我得到的是“ System.Data.DataRow”行值的值,例如“ 11363”。

这是数据表。行标题为“代码”。列标题下面的值是我要添加到字符串列表中的值。

[Codes
11361
11362
11363
15509
16494
16898
17333
19550
]

这是我尝试使用的对我不起作用的代码。

ForEach row As DataRow in ExampleDataTable
    If Not String.IsNullOrEmpty(row.ToString.Trim)
        ExampleList.Add(row.ToString)
    End If
Next

ForEach item As String in ExampleList
    Console.WriteLine(item)
Next

使用For Each循环打印出列表中的所有内容后,我得到的输出是:

System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow
System.Data.DataRow

我要输出的是:

11361
11362
11363
15509
16494
16898
17333
19550

有人可以帮我吗?现在,我已经在Stack Overflow和MSDN上阅读了很多文章,但我无法弄清楚这一点。

2 个答案:

答案 0 :(得分:3)

Jon可能被否决了,因为该代码无法编译。他忘记了一些事情,例如包括Rows集合进行迭代,当检查null时,他实际上是在检查行本身,而不是值。

    Dim StrList As New List(Of String)
    For Each DtRow As DataRow In dt.Rows
        If DtRow("ColumnName") IsNot Nothing Then
            StrList.Add(DtRow("ColumnName").ToString)
        End If
    Next

您的问题可能被否决了,因为一个简单的Google搜索可能会产生10条结果,现在是11条。

这可能会因为没有评论而被否决,所以可能会被投票,因为我需要4分才能开始发表评论。

答案 1 :(得分:0)

不添加整行。通过使用row.item(colName或ColNumber)添加列

Dim ExampleList As New List(Of String)
For Each row As DataRow In ExampleDataTable.Rows
    If Not String.IsNullOrEmpty(row.Item("Codes")) Then
        ExampleList.Add(row.Item("Codes").ToString)
    End If
Next

编辑:上面的代码现在已更正以编译OK。 LINQ版本为:

Dim ExampleList = (From rw As DataRow In ExampleDataTable.Rows
                   Where Not String.IsNullOrEmpty(rw.Item("Codes"))
                   Select rw.Item("Codes")
                   ).ToList()