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)
你总是要使用一个循环.但你可以使用看起来更好的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)