/ Ako vytvoriť LEFT JOIN v Lambda LINQ výrazoch - c #, linq, entity-framework

Ako urobiť LEFT JOIN v Lambda LINQ výrazoch - c #, linq, entity-framework

Ako urobiť tento výraz ako LEFT JOIN

var query = order.Items.Join(productNonCriticalityList,
i => i.ProductID,
p => p.ProductID,
(i, p) => i);

odpovede:

16 pre odpoveď č. 1

A to je komplikovanejší spôsob, ako používať lambda výrazy na zápis:

order.Items
.GroupJoin (
productNonCriticalityList,
i => i.ProductID,
p => p.ProductID,
(i, g) =>
new
{
i = i,
g = g
}
)
.SelectMany (
temp => temp.g.DefaultIfEmpty(),
(temp, p) =>
new
{
i = temp.i,
p = p
}
)

7 pre odpoveď č. 2

Odporučil by som prepnutie na from syntax a môžete použiť into kľúčových slov.

Robí to isté ako syntax metódy a je oveľa čitateľnejšia (IMO).

(from l1 in myFirstDataSet
join l2 in mySecondDataSet on l1.<join_val> equals l2.<join_val> into leftJ
from lj in leftJ.DefaultIfEmpty()
where <your_where_clause>
select <something>).ToList();