В настоящее время я просматриваю LINQ и пытаюсь понять разницу между let и использованием ключевого слова into. Пока что ключевое слово let кажется лучше, чем ключевое слово into, насколько я понимаю.
Ключевое слово into позволяет продолжить запрос после проецирования. (Просто хочу явно указать, что я не имею в виду ссылку для группового присоединения.)
Учитывая массив имен, он позволяет сделать следующее:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
Он принимает результат выбора и помещает его в переменную noVowel, которая затем позволяет вводить дополнительные предложения where, orderby и select. После создания переменной noVowel переменная n больше не доступна.
С другой стороны, ключевое слово let использует временные анонимные типы, позволяющие повторно использовать более одной переменной за раз.
Вы можете сделать следующее:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
Обе переменные noVowel и n доступны для использования (хотя я и не использовал ее в этом случае).
Пока я вижу разницу, я не могу понять, почему нужно использовать ключевое слово into по ключевому слову let, если только явным образом не хотел, чтобы предыдущие переменные не могли использоваться в последние части запроса.
Итак, есть ли веская причина, почему оба слова существуют?