Vb.net 使用列表从数据表中获取列
我可以使用例如Vb.net 使用列表从数据表中获取列,vb.net,select,datatables,toarray,Vb.net,Select,Datatables,Toarray,我可以使用例如 Dim arrayOfObjects()() As Object = DT.AsEnumerable().Select(Function(b) {b("x1"), b("x2"), b("x3")}).ToArray() 但是,我的大多数获取都会涉及不同的列组合,因此在本例中,我将使用列名的列表或字符串数组,然后更愿意基于列表或数组获取列。那怎么办呢?我还没有见过可以将字段名串联在一个字符串中,并将其插入Select命
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
,并在表单中添加了几行。Load
Cols
是我想要在新的DataTable
中使用的一个字符串
列名数组。这里的神奇之处在于这里记录的.ToTable
方法
您可以替换:
Dim arrayOfObjects()()As Object=DT.AsEnumerable()。选择(函数(b){b(“x1”)、b(“x2”)、b(“x3”)})。ToArray()
与:
Dim mystr As String=“x1,x2,x3”
Dim tarCols As String()=mystr.Split({“,”},StringSplitOptions.RemoveEmptyEntries)
“捷径
'Dim tarCols={“x1”、“x2”、“x3”}
Dim arrayOfObjects As Object()=dt.DefaultView.ToTable(False,tarCols)。
AsEnumerable().Select(函数(x)x.ItemArray.ToArray())
提取任何给定的一个或多个
DataColumn
的值并创建该锯齿数组。Dim tarCols={“x2”、“x3”、“x4”}:Dim rows=dt.DefaultView.ToTable(False,tarCols).AsEnumerable().ToArray()
。谢谢,但这会生成一个列名列表。相反,我需要一个锯齿状数组(),其中填充了来自三列的数据。基本思想是连接一个字符串并以某种方式将其注入Select命令,以获取指定列的数据。基本问题是函数(b){b(“x1”)、b(“x2”)、b(“x3”)}
不能用字符串或对象替换。现在,我用DataView处理这个问题,但是我必须循环行和列。正在寻找将字符串或(字符串的)列表填充到Select()中的方法。谢谢,这将有助于加载包含选定列的DataGridView。
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