Почему можно использовать это:
from r1 in Enumerable.Range(1, 10)
join q1 in Enumerable.Range(1, 20) on r1 equals q1
select r1;
но использовать это невозможно:
from r1 in Enumerable.Range(1, 10)
let q = Enumerable.Range(1, 20)
join q1 in q on r1 equals q1
select r1;
В документации MSDN на let clause
отсутствуют некоторые детали.
Обновление:
Я просто попытался сделать выражение более четким. В моей ситуации у меня есть несколько методов цепочки, которые я хотел бы поместить в let clause
. В противном случае предложение объединения стало слишком чудовищным. Поскольку невозможно использовать let clause
(как упоминал Джон), я ввел внешнюю переменную здесь:
IEnumerable<int> q = Enumerable.Range(1, 10);
from r1 in Enumerable.Range(1, 10)
join q1 in q on r1 equals q1
select r1;