我有一个数据表,其中有一列。我想使用该“数据表”列,然后将其直接转换为字符串列表。
我尝试使用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上阅读了很多文章,但我无法弄清楚这一点。
答案 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()