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}");
}