如何编写一对一的LINQ查询

时间:2016-09-13 03:31:41

标签: vb.net linq vb.net-2010

我是初学者并在VB.Net中学习LINQ。我有一个表A ,列

workID(PK) idAccount

另一个表格B ,列

出价(PK),BName和工作ID(FK)

表A与表B 之间存在一对一的关系

现在我想将表数据放入/复制到另一个表C ,其列为

workID,idAccount,BName 。但我不知道如何编写LINQ查询并获取两个表数据并将其放在第3个表中。请帮我。到目前为止我已经尝试过了。下面是我的项目的代码片段。

Public Function Hello(ByVal dt As A, ByVal dtm As B) 
                Dim dtReturn As New C
                If dt IsNot Nothing AndAlso dt.Any Then
                  Dim row As WorkOrderRow `row corresponding to the C Table
                    For Each r In dt
                        row = dtReturn.NewWorkRow 'traversing the row 
                        With row
                            .WorkID = r.WorkID
                            .idAccount = r.idAccount
                        End With
                        dtReturn.AddWorkOrderActivityRow(row)
                    Next
                End If
        End Function

它的工作完全正常,但我也需要输入 B 的数据。使用上面的代码,我只能复制表A的数据。请指导我如何编写LINQ查询并遍历它。

我应该可以做像

这样的事情
                     With row
                        .WorkID = x.WorkID
                        .idAccount = x.idAccount
                        .BName = x.BName
                    End With

x是查询生成的行。

1 个答案:

答案 0 :(得分:0)

您可能希望首先加入A和B的结果(此处示例:https://msdn.microsoft.com/en-us/library/bb311040.aspx),然后创建C行。这样更容易。

        Dim newCs = (From a In tableA
                 Join b In tableB On a.workID Equals b.workID
                 Select New TableC With {
                        .workID = a.workID,
                        .idAccount = a.idAccount,
                        .BName = b.BName
                     })