如何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() }
Run Code Online (Sandbox Code Playgroud)
那么对于每个x值,都会有一个调用DefaultIfEmpty.对于非空序列,只传递值.对于空序列,将返回默认值(一次).
有关更多信息,请参阅我的Edulinq博客文章.