В даний час я розглядаю 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ключовим словом, якщо явно не хоче переконатися, що попередні змінні не можуть бути використані в останніх частинах запиту.
Отже, чи є вагома причина, чому обидва ключові слова існують?

letприкладі -where noVowel, щоnoVowelв такому випадку?