Atualmente, estou aprimorando o LINQ e tentando compreender a diferença entre let
e usando a into
palavra - chave. Até agora, a let
palavra - chave parece melhor do que a into
palavra - chave, pelo que entendi.
A into
palavra-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 noVowel
variável que permite então que a introduzir adicionais where
, orderby
e select
cláusulas. Depois que a noVowel
variável é criada, ela n
não está mais disponível.
A let
palavra-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 noVowel
e n
estã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 into
palavra-chave em vez da palavra- let
chave, 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?
let
exemplo - owhere noVowel
que énoVowel
nesse caso?