РЕДАКТИРОВАТЬ: я полностью уничтожил мой первоначальный вопрос, чтобы переформулировать его так, чтобы это было более прямо вперед. Прошу прощения, если это против какого-либо этикета, но я подумал, что будет еще хуже опубликовать новый по той же теме:)
Можно ли написать этот LINQ-запрос с синтаксисом понимания запроса, реализовав собственную программу SelectMany или подобное:
var enumerable =
Enumerable.Range(1, 10)
.Aggregate(new SomeAggregation(),
(c, n) =>
{
var l = c.SomeOperation(); // expensive operation
return c.UseIt(l).UseItAgain(l); // the result is needed multiple times
});
Я думаю о чем-то вроде:
var enumerable = from c in new SomeAggregation().AsSeed()
from n in Enumerable.Range(1, 10)
from l in c.SomeOperation()
select c.UseIt(l).UseItAgain(l);
Или:
var enumerable = from c in new SomeAggregation().AsSeed()
from n in Enumerable.Range(1, 10)
let l = c.SomeOperation()
select c.UseIt(l).UseItAgain(l);
Любая помощь, советы, ссылки или тому подобное высоко ценится!