如何循环列的行值?

时间:2013-10-18 13:58:55

标签: asp.net sql vb.net

表名 - 桌面

列 - HostName

我试过这种方式但没有工作

Dim adapter As New MyAdapter()
Dim table As New MyTable()

adapter.Fill(table, param1, param2)

If table.Rows.Count > 0 Then
    Dim s As String = table.Rows(1)("mycolumn1").ToString()
End If

2 个答案:

答案 0 :(得分:3)

.NET中的所有集合都以索引0而不是1开头。因此即使只有一行也可以使用:

If table.Rows.Count > 0 Then
   Dim s As String = table.Rows(0)("HostName").ToString()
End If

请注意,最好使用键入的Field方法:

Dim hostName = table.Rows(0).Field(Of String)("HostName")

由于您提到了loop,因此您可以使用For Each

For Each row As DataRow In table.Rows
    Dim hostName = row.Field(Of String)("HostName")
Next

或使用LINQ:

Dim allHostNames = From row in table
                   Select row.Field(Of String)("HostName")
Dim hostNamesCommaSeparated = String.Join(",", allHostNames)

除此之外,由于您使用的是强类型DateTableTableAdapter,因此您还应该能够直接访问自动生成的columnes:

Dim hostName As String = table.Rows(0).HostName

答案 1 :(得分:1)

  

如何使用SQL Server和VB.net循环列的行值?

您正在寻找For Each循环

For Each row As DataRow In table.Rows
    Dim s As String = row("mycolumn1").ToString()
    '' rest of your code
Next row