使用列表从数据表中获取列
Using a List to Fetch Columns from a DataTable
我可以成功地从 DataTable (DT) 中获取列 x1、x2 和 x3,例如使用
Dim arrayOfObjects()() As Object = DT.AsEnumerable().Select(Function(b) {b("x1"), b("x2"), b("x3")}).ToArray()
但是,我的大部分提取都涉及不同的列组合,因此在这种情况下,我会使用列名的列表或字符串数组,然后更愿意根据列表或数组提取列。怎么做到的?我还没有看到可以在字符串中将字段名称连接在一起并将其插入 Select 命令以获取的用例。
我正在设想使用类似
的东西
Dim mystr As String = "x1,x2,x3"
Dim arrayOfObjects()() As Object = DT.AsEnumerable().Select(mystr}).ToArray()
我创建了一个 DataTable
并在 Form.Load
中添加了几行
Cols
是一个 String
列名数组,我想要在新的 DataTable
中使用。这里的魔力在于 .ToTable
方法 MS Docs
Private dt As New DataTable
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
With dt.Columns
.Add("Number")
.Add("Name")
.Add("LastName")
End With
dt.Rows.Add({"Mary", "Ruth", "Morrison"})
dt.Rows.Add("William", "James", "Patrick")
DataGridView1.DataSource = dt
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Cols = {"Number", "LastName"}
Dim rows = dt.DefaultView.ToTable(False, Cols)
DataGridView1.DataSource = rows
End Sub
您可以替换:
Dim arrayOfObjects()() As Object = DT.AsEnumerable().Select(Function(b) {b("x1"), b("x2"), b("x3")}).ToArray()
与:
Dim mystr As String = "x1,x2,x3"
Dim tarCols As String() = mystr.Split({","}, StringSplitOptions.RemoveEmptyEntries)
' Shortcut
' Dim tarCols = { "x1", "x2", "x3" }
Dim arrayOfObjects As Object()() = dt.DefaultView.ToTable(False, tarCols).
AsEnumerable().Select(Function(x) x.ItemArray).ToArray()
提取任何给定的一个或多个值 DataColumn
并创建锯齿状数组。
我可以成功地从 DataTable (DT) 中获取列 x1、x2 和 x3,例如使用
Dim arrayOfObjects()() As Object = DT.AsEnumerable().Select(Function(b) {b("x1"), b("x2"), b("x3")}).ToArray()
但是,我的大部分提取都涉及不同的列组合,因此在这种情况下,我会使用列名的列表或字符串数组,然后更愿意根据列表或数组提取列。怎么做到的?我还没有看到可以在字符串中将字段名称连接在一起并将其插入 Select 命令以获取的用例。
我正在设想使用类似
的东西Dim mystr As String = "x1,x2,x3"
Dim arrayOfObjects()() As Object = DT.AsEnumerable().Select(mystr}).ToArray()
我创建了一个 DataTable
并在 Form.Load
Cols
是一个 String
列名数组,我想要在新的 DataTable
中使用。这里的魔力在于 .ToTable
方法 MS Docs
Private dt As New DataTable
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
With dt.Columns
.Add("Number")
.Add("Name")
.Add("LastName")
End With
dt.Rows.Add({"Mary", "Ruth", "Morrison"})
dt.Rows.Add("William", "James", "Patrick")
DataGridView1.DataSource = dt
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Cols = {"Number", "LastName"}
Dim rows = dt.DefaultView.ToTable(False, Cols)
DataGridView1.DataSource = rows
End Sub
您可以替换:
Dim arrayOfObjects()() As Object = DT.AsEnumerable().Select(Function(b) {b("x1"), b("x2"), b("x3")}).ToArray()
与:
Dim mystr As String = "x1,x2,x3"
Dim tarCols As String() = mystr.Split({","}, StringSplitOptions.RemoveEmptyEntries)
' Shortcut
' Dim tarCols = { "x1", "x2", "x3" }
Dim arrayOfObjects As Object()() = dt.DefaultView.ToTable(False, tarCols).
AsEnumerable().Select(Function(x) x.ItemArray).ToArray()
提取任何给定的一个或多个值 DataColumn
并创建锯齿状数组。