Ser*_*gey 5 c# linq entity-framework
如何将此表达式设为LEFT JOIN
var query = order.Items.Join(productNonCriticalityList,
i => i.ProductID,
p => p.ProductID,
(i, p) => i);
Run Code Online (Sandbox Code Playgroud)
Mag*_*nus 18
这是使用lambda表达式编写它的更复杂的方法:
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
}
)
Run Code Online (Sandbox Code Playgroud)
我建议切换到from语法,你可以使用into关键字.
它与方法语法的作用相同,并且更具可读性(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();
Run Code Online (Sandbox Code Playgroud)