繁体   English   中英

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

[英]How do you convert a Data Table Column to a List of string in VB.Net

我有一个数据表,其中有一列。 我想获取该数据表列并将其直接转换为字符串列表。

我尝试使用 For Each 循环来获取每个数据行项并将其写入字符串列表,但是当我在使用写入行后查看 output 时,我得到“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 循环打印出列表中的所有内容后,我从中得到的 output 是:

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

我想要的 output 是:

11361
11362
11363
15509
16494
16898
17333
19550

谁能帮我解决这个问题? 我现在在 Stack Overflow 和 MSDN 上阅读了很多帖子,但我无法弄清楚这一点。

乔恩可能投了反对票,因为该代码无法编译。 他忘记了一些事情,例如包括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分才能开始发表评论。

不要添加整行。 使用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()

Enumerable.Range(0,dt.ColumnCount).Select(Function(x) dt.Columns(x).ToString).ToList()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM