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