Actualmente estoy revisando LINQ y estoy tratando de comprender la diferencia entre let
y usando la palabra clave into
. Hasta ahora, la palabra clave let
parece mejor que la palabra clave into
, según mi comprensión. La palabra clave into
esencialmente permite continuar una consulta después de una proyección. (Sólo quiero indicar explícitamente que no me refiero a la otra para unirse a grupo.)¿La palabra clave let de linq es mejor que su palabra clave?
Dada una matriz de nombres que permite a uno hacer lo siguiente:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
Se toma el resultado de la seleccione y lo coloca en la variable noVowel
, que luego permite introducir cláusulas where
, orderby
y select
adicionales. Una vez que se crea la variable noVowel
, la variable n
ya no está disponible.
La palabra clave let
, por otro lado, utiliza tipos temporales anónimos para permitirle reutilizar más de una variable a la vez.
Usted puede hacer lo siguiente:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
Tanto las variables noVowel
y n
están disponibles para su uso (aunque yo no lo he utilizado en este caso).
Aunque puedo ver la diferencia, no puedo entender por qué uno querría usar la palabra clave into
sobre la palabra clave let
a menos que se quiera asegurarse explícitamente de que las variables anteriores no se puedan usar en las últimas partes de la consulta.
Entonces, ¿hay una buena razón por la cual ambas palabras clave existen?
¿Es un error tipográfico en el ejemplo 'let' -' where noVowel', ¿qué es 'noVowel' en ese caso? – sll