Я в настоящее время отрабатывает на 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в этом случае?