【发布时间】:2017-05-30 20:50:28
【问题描述】:
如何使这个表达式为 LEFT JOIN
var query = order.Items.Join(productNonCriticalityList,
i => i.ProductID,
p => p.ProductID,
(i, p) => i);
【问题讨论】:
标签: c# linq entity-framework
如何使这个表达式为 LEFT JOIN
var query = order.Items.Join(productNonCriticalityList,
i => i.ProductID,
p => p.ProductID,
(i, p) => i);
【问题讨论】:
标签: c# linq entity-framework
这是使用 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
}
)
【讨论】:
我建议切换到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();
【讨论】:
from...join...into 只是方法语法中的GroupJoin。使用查询语法不是必需。