Obecnie odświerzam LINQ i próbuję zrozumieć różnicę między let
i używając into
słowa kluczowego. Jak dotąd let
słowo kluczowe wydaje się lepsze niż into
słowo kluczowe, o ile wiem.
Słowo into
kluczowe zasadniczo umożliwia kontynuowanie zapytania po projekcji. (Chcę tylko wyraźnie powiedzieć, że nie odnoszę się do tego, który służy do dołączania do grupy).
Biorąc pod uwagę tablicę nazw, można wykonać następujące czynności:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
Zajmuje wynik select i umieszcza ją w noVowel
zmiennej, która następnie pozwala na wprowadzenie dodatkowych where
, orderby
oraz select
klauzule. Po noVowel
utworzeniu n
zmiennej nie jest już dostępna.
Z let
drugiej strony słowo kluczowe używa tymczasowych typów anonimowych, aby umożliwić ponowne użycie więcej niż jednej zmiennej naraz.
Możesz wykonać następujące czynności:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
Dostępne są zarówno zmienne, jak noVowel
i n
(mimo że nie używałem ich w tym przypadku).
Chociaż widzę różnicę, nie bardzo rozumiem, dlaczego ktoś miałby chcieć użyć into
słowa kluczowego zamiast słowa let
kluczowego, chyba że wyraźnie chciałoby się upewnić, że poprzednie zmienne nie mogą być używane w późniejszych częściach zapytania.
Czy jest więc dobry powód, dla którego istnieją oba słowa kluczowe?
let
przykład literówka -where noVowel
conoVowel
w takim razie jest?