Vb.Net中的DataTable列到字符串数组

Dar*_*vil 1 vb.net datatable autocomplete

我正在使用DataTable Column,我想将一列数据表获取到String数组,然后想要分配给AutoCompleteStringCollection对象.目前我使用循环填充'AutoCompleteStringCollection',但如果我有超过500行,则需要时间.我想用循环来做这个.可以任何身体建议更好的方式.

Dim autocomp As New AutoCompleteStringCollection
        For index As Integer = 0 To unionTable.Rows.Count - 1
            autocomp.Add(unionTable.Rows(index)(1).ToString())
        Next
Run Code Online (Sandbox Code Playgroud)

我想没有循环,请帮忙

经过一番努力,我设法用.Net 3.5框架做到了这一点

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Try
        Dim table1 As DataTable = New DataTable("Test")
        table1.Columns.Add("name")
        table1.Columns.Add("id")
        table1.Rows.Add("Abb", 1)
        table1.Rows.Add("Killers", 2)

        Dim allAutoCompletes = From row In table1.AsEnumerable()
                       Let autoComplete = row.Field(Of String)(0)
                       Select autoComplete
        Dim autoCompleteString As String() = allAutoCompletes.ToArray()
        Dim x As String = ""
        Dim autocomp As New AutoCompleteStringCollection
        autocomp.AddRange(autoCompleteString)
    Catch ex As Exception
        MessageBox.Show(ex.Message)
    End Try
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 5

你总是要使用一个循环.但你可以使用看起来更好的LINQ:

Dim allAutoCompletes = From row In unionTable.AsEnumerable()
                       Let autoComplete = row.Field(Of String)(1)
                       Select autoComplete 
Dim autoCompleteStringCollection As String() = allAutoCompletes.ToArray()
Run Code Online (Sandbox Code Playgroud)

如果你想List(Of String)使用ToList.

这与上面的方法语法相同,使用你发现的更具可读性:

Dim autoCompleteStringCollection As String() = unionTable.AsEnumerable().
    Select(Function(r) r.Field(Of String)(1)).
    ToArray()
Run Code Online (Sandbox Code Playgroud)