Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 使用linq from 2 datatable左键连接多列,并将其绑定到1 datagridview_Vb.net_Linq_Datagridview - Fatal编程技术网

Vb.net 使用linq from 2 datatable左键连接多列,并将其绑定到1 datagridview

Vb.net 使用linq from 2 datatable左键连接多列,并将其绑定到1 datagridview,vb.net,linq,datagridview,Vb.net,Linq,Datagridview,你能帮我理解linq吗?我在谷歌上搜索了几乎一整天,但仍然无法正确理解架构思维 问题是, 我有两个来自不同数据库的datatable,我想在datagridview中以OrderNum、OrderLine、OrderRelNum三列显示左连接数据集a和b 在sql中,查询如下所示 Select * From dataset1 a left join dataset2 b on a.OrderNum = b.OrderNum and a.OrderLine = b.OrderLi

你能帮我理解linq吗?我在谷歌上搜索了几乎一整天,但仍然无法正确理解架构思维

问题是, 我有两个来自不同数据库的datatable,我想在datagridview中以OrderNum、OrderLine、OrderRelNum三列显示左连接数据集a和b 在sql中,查询如下所示

Select *
From dataset1 a
left join dataset2 b
    on a.OrderNum = b.OrderNum 
    and a.OrderLine = b.OrderLine 
    and a.OrderRelNum = b.OrderRelNum
问题是如何在Linq中执行此查询并在datagridview中显示它们

这是我的求解代码,用于获得正确的查询并将它们数据源化到datagridview中

Public Sub DataSetLinq120()
    strSQL = "SELECT * FROM po "
    strSQL2 = "SELECT * FROM PO"
    Dim DA As New OdbcDataAdapter(strSQL, Connection)
    Dim DS As New DataSet

    DA.Fill(DS, "Source1")

    Dim DA2 As New OdbcDataAdapter(strSQL2, Connection2)
    Dim DS2 As New DataSet

    DA2.Fill(DS2, "Source2")

    Dim dt = DS.Tables("Source1")
    Dim dt2 = DS2.Tables("Source2")

    Dim custQuery = (From a In dt _
                    Group Join b In dt2 On a!OrderNum Equals b!OrderNum _
                    And a!OrderLine Equals b!OrderLine _
                    And a!OrderRelNum Equals b!OrderRelNum _
                    Into Data1 = Group _
                    From c In Data1.DefaultIfEmpty
                    Select New With {
                        .OrderNumber = a!OrderNum,
                        .OrderLine = a!OrderLine,
                        .OrderRelNumber = a!OrderRelNum,
                        .Stock_Status = If(c Is Nothing, "", c.Field(Of String)("Stock_Status")),
                        .Comments = If(c Is Nothing, "", c.Field(Of String)("Comments"))}).ToList

    DataGridView1.DataSource = Nothing
    DataGridView1.DataSource = custQuery

End Sub

下面是来自MSDN的一篇关于如何在LINQ中执行左外部联接的好文章: 您应该能够轻松地在此基础上创建左连接。
除此之外,我不确定您为什么不想在本例中简单地使用SQL处理左连接。如果您不需要原始数据集,我不明白您为什么不直接在SQL中执行此操作。

thx对于您的帮助,我不直接加入SQL的原因是数据集1和数据集2之间的数据库不同。上面的sql查询只是我想在linqOk中做的有意义的示例。你能用MSDN中的例子解决它吗?我仍然对linq查询的体系结构感到困惑,因为现在我正在使用我在问题中更新的查询