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。对于非空序列,这只会传递值。对于空序列,将返回默认值(一次)。

有关更多信息,请参见my Edulinq blog post on it

关于c# - LINQ的左联接`join…into`和`DefaultIfEmpty()`如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16469767/

10-09 18:27