Obecnie odświerzam LINQ i próbuję zrozumieć różnicę między leti używając intosłowa kluczowego. Jak dotąd letsłowo kluczowe wydaje się lepsze niż intosłowo kluczowe, o ile wiem.
Słowo intokluczowe 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 noVowelzmiennej, która następnie pozwala na wprowadzenie dodatkowych where, orderbyoraz selectklauzule. Po noVowelutworzeniu nzmiennej nie jest już dostępna.
Z letdrugiej 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 noVoweli 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ć intosłowa kluczowego zamiast słowa letkluczowego, 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?

letprzykład literówka -where noVowelconoVowelw takim razie jest?