1

LINQjoin ... into和如何.DefaultIfEmpty()表达左连接?

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

4

1 回答 1

7

假设我们谈论的是 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 博客文章。

于 2013-05-09T19:45:22.787 回答