LinQ - 左连接两个DataTables

时间:2012-11-07 15:24:20

标签: vb.net linq datatable

我想知道是否有人可以帮助我。 我是LINQ的新手,仍然试图了解它是如何组合在一起的。

我在SQL中有一个简单的左连接查询,返回表1中表2中不存在的所有事务。两个表的结构相同。

SELECT Table1.*
FROM Table1 LEFT JOIN Table2 ON Table1.DealReference = Table2.DealReference
WHERE (((Table2.DealReference) Is Null));

有人可以指导我,如何在LinQ中实现同样的目标。

我正在使用以下DataTables:

    Dim currentDataTable = _DataTable1.AsEnumerable
    Dim previousDataTable = _DataTable2.AsEnumerable

我希望将结果输出回数据表。

由于

BM

1 个答案:

答案 0 :(得分:0)

1)Linq-To-DataTableLinq-To-Objects的子集,并假设数据已经在内存中。因此,如果您想要一个可扩展的解决方案,您可能需要查看直接查询数据库的Linq-To-Sql

2)您的联接不是简单的左连接,而是左外连接。例如,您可以使用此查询实现此目的:

Dim rows = From r1 In _DataTable1
           Group Join r2 In _DataTable2
           On r1.Field(Of String)("DealReference") Equals r2.Field(Of String)("DealReference")
           Into DataGroup = Group
           From row In DataGroup.DefaultIfEmpty
           Where row Is Nothing
           Select r1
Dim tblresult = rows.CopyToDataTable()