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/