В даний час я розглядаю 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
в такому випадку?