【发布时间】:2014-08-07 22:38:46
【问题描述】:
请帮助我。这是我的第一个 LINQ。
我有两个数据表,我需要加入两个字段。
我该怎么做?
我尝试了以下操作,但连接不起作用。 "yk.Field(Of String)("secNo")" 出错,消息是"只能从不带参数的简单或限定名称中推断出匿名类型成员名称"
Dim dtYk As DataTable = New DataTable("dtYk")
dtYk.Columns.Add("secNo")
dtYk.Columns.Add("BomLine")
dtYk.Rows.Add("EA(1)", 1)
dtYk.Rows.Add("EA(8)", 17)
Dim dtIvt As DataTable = New DataTable("dtIvt")
dtIvt.Columns.Add("secNo")
dtIvt.Columns.Add("BomLine")
dtIvt.Columns.Add("PartCode")
dtIvt.Rows.Add("EA(1)", 1, "TRML07-32-LH-ASSY**")
dtIvt.Rows.Add("EA(8)", 17, "328")
' Create a DataSet. Put both tables in it.
Dim dsYk As DataSet = New DataSet("dsYk")
dsYk.Tables.Add(dtYk)
Dim dsIvt As DataSet = New DataSet("dsIvt")
dsIvt.Tables.Add(dtIvt)
Dim LinQuery = From yk In dtYk.AsEnumerable
Join ivt In dtIvt.AsEnumerable
On New With {yk.Field(Of String)("secNo") , yk.Field(Of String)("BomLine")} Equals New With {ivt.Field(Of String)("secNo") , ivt.Field(Of String)("BomLine")}
Select New With {yk.Field(Of String)("secNo") , yk.Field(Of String)("BomLine"),ivt.Field(Of String)("secNo")}
这是一个简单的版本。但这只会连接一个字段并只选择一个表。
Dim LinQuery = From yk In dtYk.AsEnumerable()
Join ivt In dtIvt.AsEnumerable()
On yk.Field(Of String)("secNo") Equals ivt.Field(Of String)("secNo")
Select yk
Dim dt As New DataTable
dt = LinQuery.CopyToDataTable
我的目标是加入两个字段,选择应该是 yk.SecNo、yk.BomLine 和 ivt.PartCode。请帮忙。谢谢
【问题讨论】: