In this case, it is used SelectMany, and the concept is called transparent identifiers that preserve existing range variables. Thus, your request translates into:
var query = Enumerable.Range(0, 10)
.SelectMany(item => Enumerable.Range(item, 10),
(item, item2) => new { item, item2 })
.SelectMany(z => Enumerable.Range(z.item2, 10),
(z, item3) => new { z.item, z.item2, item3 });
(In this case, it zis a transparent identifier. If there were an whereitem or something other than selectafter the last fromn, another transparent identifier would be entered.)
All translations are described in the C # language specification, section 7.16.
source
share