Atualmente, estou aprimorando o LINQ e tentando compreender a diferença entre lete usando a intopalavra - chave. Até agora, a letpalavra - chave parece melhor do que a intopalavra - chave, pelo que entendi.
A intopalavra-chave permite essencialmente continuar uma consulta após uma projeção. (Só quero declarar explicitamente que não estou me referindo àquele para entrar em grupo.)
Dado um conjunto de nomes, permite fazer o seguinte:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
Leva o resultado do select e coloca-o na noVowelvariável que permite então que a introduzir adicionais where, orderbye selectcláusulas. Depois que a noVowelvariável é criada, ela nnão está mais disponível.
A letpalavra-chave, por outro lado, usa tipos anônimos temporários para permitir que você reutilize mais de uma variável por vez.
Você pode fazer o seguinte:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
As variáveis noVowele nestão disponíveis para uso (embora eu não tenha usado neste caso).
Embora eu possa ver a diferença, não consigo entender por que alguém iria querer usar a intopalavra-chave em vez da palavra- letchave, a menos que alguém quisesse explicitamente ter certeza de que as variáveis anteriores não puderam ser usadas nas últimas partes da consulta.
Então, há um bom motivo para as duas palavras-chave existirem?

letexemplo - owhere noVowelque énoVowelnesse caso?