Left Outer Соедините две таблицы данных - VB.NET - PullRequest
0 голосов
/ 11 октября 2019

Как я могу объединить две таблицы данных, используя linq. Я хочу вернуть все заказы с отмененным флагом статуса.

Таблица заказов

    ItemNum OrderNum
1   Item1   101
2   Item2   102

Таблица журнала заказов

    ItemNum OrderNum    IsCanceled
1   Item2   102         1

Окончательный результат

    OrderNum    ItemNum  IsCanceled
1   101         Item1    0
2   102         Item2    1

Вот демо;

https://rextester.com/RQQZJ4470

Я пробовал это до сих пор без удачи;

 Dim result = From b In backOrders.AsEnumerable()
                         Join c In backOrdersCanceledItems.AsEnumerable() On
                    c.Field(Of Integer)("DistNum") Equals b.Field(Of Integer)("DistNum") And c.Field(Of String)("OriginalOrderNum") Equals b.Field(Of String)("OriginalOrderNum")
                         Select New With {.OriginalOrderNum = b.Field(Of String)("OriginalOrderNum"),
                    .DistNum = b.Field(Of Integer)("DistNum"), .ItemNum = b.Field(Of String)("ItemNum"),
                    .IsCanceled = c.Field(Of String)("IsCanceled")}

1 Ответ

0 голосов
/ 11 октября 2019

Конечно, вам просто нужно выполнить левое соединение в LINQ:

Dim result = From b In backOrders.AsEnumerable()
             Group Join c In backOrdersCanceledItems.AsEnumerable() On
                c.Field(Of Integer)("DistNum") Equals b.Field(Of Integer)("DistNum") And c.Field(Of String)("OriginalOrderNum") Equals b.Field(Of String)("OriginalOrderNum") Into cj = Group
             From c In cj.DefaultIfEmpty
             Select New With {
                .OriginalOrderNum = b.Field(Of String)("OriginalOrderNum"),
                .DistNum = b.Field(Of Integer)("DistNum"),
                .ItemNum = b.Field(Of String)("ItemNum"),
                .IsCanceled = If(c?.Field(Of String)("IsCanceled"), "0") }

См. Мой рецепт SQL to LINQ для версий C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...