LINQ's left-join是怎么join的?'和' DefaultIfEmpty() '的工作
本文关键字:DefaultIfEmpty 工作 left-join LINQ join | 更新日期: 2023-09-27 18:12:50
LINQ的join ... into
和.DefaultIfEmpty()
是如何表达左连接的?
.DefaultIfEmpty()
只评估一次,还是n次?
假设我们正在谈论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博客关于它的更多信息