Attualmente sto ripassando su LINQ e sto cercando di comprendere la differenza tra lete utilizzando la intoparola chiave. Finora la letparola chiave sembra migliore della intoparola chiave per quanto ne so .
La intoparola 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 noVowelvariabile che poi permette di introdurre ulteriori where, orderbye selectle clausole. Una volta noVowelcreata la nvariabile , la variabile non è più disponibile.
La letparola 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 noVowele nsono 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 intoparola chiave sulla parola letchiave 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?

letesempio -where noVowel, cosa c'ènoVowelin quel caso?