在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

请教一下,上述哪里出了问题,怎样解决?或者有无其它完整的方法,有劳详细解答!
...全文
531 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
望諸公 2021-04-09
  • 打赏
  • 举报
回复
只有非常简单的Linq,才有asdataview这个方法,大多情况不可用,我需要的是从多个表取值的Linq,有办法吗?
jhonsonzhang 2021-03-26
  • 打赏
  • 举报
回复
linq查询结果有asdataview方法。 dim qry=你那个级联查询的rlt.asdataview. qry.table就是你要的对象。
望諸公 2021-03-24
  • 打赏
  • 举报
回复
因为直接从数据库读取的数据还需要加工,最终还是要通过Linq来处理,从VS输出。
还请说明一下这种方法的详细用法,非常感谢!
兔子-顾问 2021-03-23
  • 打赏
  • 举报
回复
如非必要,建议不要这么操作,linq只是简化的循环,你不如组合sql语句用数据库实现关联查询功能。

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧