1

左結合を表現するためにLINQjoin ... intoとはどのように機能しますか?.DefaultIfEmpty()

評価されるのは 1 回だけですか.DefaultIfEmpty()、それともn回ですか?

4

1 に答える 1

7

LINQ to Objects について話していると仮定するとDefaultIfEmpty、結果の要素ごとに 1 回評価されます。結合の「左」部分に一致する値のグループであるシーケンスで評価されます。したがって、次の場合:

from x in foo
join y in bar into z
let g = z.DefaultIfEmpty()
select new { x, g.Count() }

x次に、値ごとに が呼び出されますDefaultIfEmpty。空でないシーケンスの場合、値が渡されるだけです。空のシーケンスの場合、代わりにデフォルト値が (1 回) 返されます。

詳細については、Edulinq のブログ記事を参照してください。

于 2013-05-09T19:45:22.787 に答える