LINQ's left-join是怎么join的?'和' DefaultIfEmpty() '的工作

本文关键字:DefaultIfEmpty 工作 left-join LINQ join | 更新日期: 2023-09-27 18:12:50

LINQ的join ... into.DefaultIfEmpty()是如何表达左连接的?

.DefaultIfEmpty()只评估一次,还是n次?

LINQ's left-join是怎么join的?'和' DefaultIfEmpty() '的工作

假设我们正在谈论LINQ to Objects, DefaultIfEmpty将在结果中对每个元素进行一次评估。它将在序列上求值,该序列是与连接的"左"部分匹配的一组值。如果我们输入:

from x in foo
join y in bar into z
let g = z.DefaultIfEmpty()
select new { x, g.Count() }

则对于每个x值,将调用DefaultIfEmpty。对于非空序列,它只会传递值。对于空序列,则返回默认值(一次)。

查看我的Edulinq博客关于它的更多信息