0

誰かが私を助けることができるかどうか疑問に思っています。私は LINQ を初めて使用しますが、LINQ がどのように適合するかをまだ理解しようとしています。

テーブル 2 には存在しない、テーブル 1 にあるすべてのトランザクションを返す SQL の単純な左結合クエリがあります。両方のテーブルの構造は同じです。

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

LinQで同じことを達成する方法を教えてください。

次の DataTable を使用しています。

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

結果の出力をデータテーブルに戻すことを検討しています。

ありがとう

BM

4

1 に答える 1

0

1)Linq-To-DataTableのサブセットでLinq-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()
于 2012-11-07T15:39:27.027 に答える