Zum Hauptinhalt springen

GroupJoin Bedingung (Left Join)

Fragestellung

  • Welche Bestellungen liegen für die einzelnen Produkte vor. Es gibt Produkte ohne eine Bestellung, welche auch angezeigt werden sollen.

Abfragesyntax

 var list = from c in customers
from o in c.Orders
select o;

var query13 = from p in products
join c in list on p.ProductId equals c.ProductId into allOrders
select new { p.ProductId, p.ProductName, Orders = allOrders };


foreach (var t in query13)
{
Console.WriteLine($"ProductId: {t.ProductId}, ProductName: {t.ProductName}");
foreach (var o in t.Orders)
Console.WriteLine($" OrderId: {o.OrderId}");
}

Erweiterungsmethodensyntax

var query14 = products
.GroupJoin(customers.SelectMany(c => c.Orders),
p => p.ProductId,
o => o.ProductId,
(p, o) => new { p.ProductId, p.ProductName, Orders = o });

foreach (var t in query14)
{
Console.WriteLine($"ProductId: {t.ProductId}, ProductName: {t.ProductName}");
foreach (var o in t.Orders)
Console.WriteLine($" OrderId: {o.OrderId}");
}

Kommentare