态 在没有标准语法的情况下,在LINQ中实现左外连接可能具有挑战性。尽管内部连接具有直接的实现,但左外连接需要不同的策略。 让我们探索一个常见的误解,然后是正确的方法。
>
join-on-equals-into
有缺陷的尝试:
>子句中使用条件分配来模仿左外的联接:join-on-equals-into
此方法无法准确表示左外连接,因为它为具有多个匹配右侧元素的左侧元素生成了多个条目,并且在右侧没有匹配的情况下,它无法正确处理案例给定的左侧元素。
>使用的正确方法:select
>
<code class="language-csharp">// Incorrect approach List<JoinPair> leftFinal = (from l in lefts from r in rights select new JoinPair { LeftId = l.Id, RightId = (l.Key == r.Key) ? r.Id : 0 });</code>>方法。 这种方法优雅地处理了缺乏匹配的右侧元素。
这是如何有效地执行左外部加入的方法:
此代码首先执行组加入(DefaultIfEmpty()
)。 然后,即使为空(右侧没有匹配),它仍然会产生一个元素,从而允许后续
)和Null-Coalescing Operator(DefaultIfEmpty()
>的电势
以上是如何在LINQ中执行左外连接,而不使用' join-equals-into”子句?的详细内容。更多信息请关注PHP中文网其他相关文章!