Attualmente sto ripassando su LINQ e sto cercando di comprendere la differenza tra let
e utilizzando la into
parola chiave. Finora la let
parola chiave sembra migliore della into
parola chiave per quanto ne so .
La into
parola chiave consente essenzialmente di continuare una query dopo una proiezione. (Voglio solo affermare esplicitamente che non mi riferisco a quello per l'adesione al gruppo.)
Dato un array di nomi consente di fare quanto segue:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
Prende il risultato della selezione e la pone nella noVowel
variabile che poi permette di introdurre ulteriori where
, orderby
e select
le clausole. Una volta noVowel
creata la n
variabile , la variabile non è più disponibile.
La let
parola chiave, d'altra parte, utilizza tipi temporanei anonimi per consentire di riutilizzare più di una variabile alla volta.
Puoi fare quanto segue:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
Entrambe le variabili noVowel
e n
sono disponibili per l'uso (anche se non l'ho usato in questo caso).
Anche se posso vedere la differenza, non riesco a capire perché si desideri utilizzare la into
parola chiave sulla parola let
chiave a meno che non si volesse esplicitamente assicurarsi che le variabili precedenti non potessero essere utilizzate nelle ultime parti della query.
Quindi, c'è una buona ragione per cui esistono entrambe le parole chiave?
let
esempio -where noVowel
, cosa c'ènoVowel
in quel caso?