在VB.NET中,如何将一个多表联接的Linq转换为DataTable
望諸公 2021-03-22 11:38:23 类似这样的一个Linq:
Dim Linq1 = (From row1 As DataRow In DataTable1.AsEnumerable Join row2 As DataRow In DataTable2.AsEnumerable On row1.Field(Of Integer)("字段1") Equals row2.Field(Of Integer)("字段2")
Select Field1 = row1.字段1,Field3 = row2.字段3
网上找到的办法如下:
'1. 创建表
DIM DataTable3 AS DataTable
Dim Linq2 = (From row1 In Linq1.GetType().GetProperties()).ToList
For Each row1 In Linq2 '经测试,这里只得到三个属性:Count、Item、Capacity,没有字段。
Dim DataColumn1 As New DataColumn
DataColumn1.ColumnName = row1.Name
DataColumn1.DataType = row1.PropertyType
DataTable3.Columns.Add(DataColumn1)
Next row1
DataSet1.Tables.Add(DataTable3)
'2. 添加行
For J = 0 To Linq1.Count - 1 Step 1
Dim Object1 As Object(Linq2.Count - 1)
For K = 0 To Linq2.Count - 1 Step 1
Object1(K) = Linq2(K).GetValue(Linq1.Item(J), Nothing)
Next K
DataTable3.Rows.Add(Object1)
Next J
请教一下,上述哪里出了问题,怎样解决?或者有无其它完整的方法,有劳详细解答!