Ich aktualisiere gerade LINQ und versuche, den Unterschied zwischen dem let
und dem into
Schlüsselwort zu verstehen . Bisher let
scheint das into
Schlüsselwort meines Wissens besser zu sein als das Schlüsselwort.
Das into
Schlüsselwort ermöglicht es im Wesentlichen, eine Abfrage nach einer Projektion fortzusetzen. (Ich möchte nur ausdrücklich darauf hinweisen, dass ich mich nicht auf die für den Gruppenbeitritt beziehe.)
Bei einer Reihe von Namen kann man Folgendes tun:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
Es nimmt das Ergebnis der Auswahl und legt sie in die noVowel
Variable , die dann eine weitere einführen können where
, orderby
und select
Klauseln. Sobald die noVowel
Variable erstellt wurde, n
ist sie nicht mehr verfügbar.
Das let
Schlüsselwort verwendet dagegen temporäre anonyme Typen, damit Sie mehr als eine Variable gleichzeitig wiederverwenden können.
Sie können Folgendes tun:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
Sowohl die noVowel
als auch die n
Variablen stehen zur Verwendung zur Verfügung (obwohl ich sie in diesem Fall nicht verwendet habe).
Obwohl ich den Unterschied sehen kann, kann ich nicht ganz verstehen, warum man das into
Schlüsselwort über dem let
Schlüsselwort verwenden möchte, es sei denn, man wollte ausdrücklich sicherstellen, dass vorherige Variablen in späteren Teilen der Abfrage nicht verwendet werden konnten.
Gibt es einen guten Grund, warum beide Schlüsselwörter existieren?
let
Beispiel -where noVowel
was istnoVowel
in diesem Fall?