This article has been localized into German by the community.
LINQ: "Query Syntax" vs. "Method syntax"
Im vorherigen Artikel haben wir einen kurzen Blick darauf geworfen, wie beide LINQ-Syntaxen aussehen, aber lassen Sie uns sie einfach nebeneinander wieder auf den Tisch bringen, damit Sie sich im klaren sind, was wir in diesem Artikel diskutieren werden:
var listOfNames = new List<string>()
{
"John Doe",
"Jane Doe",
"Jenna Doe",
"Joe Doe"
};
// Query syntax
var qNames = from name in listOfNames where name.Length <= 8 select name;
// Method syntax
var mNames = listOfNames.Where(name => name.Length <= 8);
Während die beiden Zeilen genau dasselbe erreichen, ist der syntaktische Unterschied ziemlich klar: Die Abfragesyntax sieht mehr wie andere Abfragesprachen aus, z. B. SQL und weniger wie eine normale C# - Anweisung. Die Methodensyntax sieht dagegen sehr ähnlich wie der Rest des C# - Codes aus, den Sie in diesem Tutorial gesehen haben.
Also, der größte Unterschied ist definitiv nur die Syntax und daher werden Sie beide Varianten sehen, wenn Sie C# Artikel lesen und Antworten auf Fragen finden, die Sie haben könnten. Es scheint, dass die Abfragesyntax etwas populärer ist, weil einige Leute es einfacher zu lesen finden als die Methodensyntax - dies können Leute sein, die es gewohnt sind, Datenabrufoperationen in SQL auszudrücken. Wenn Sie andererseits noch nie eine Abfragesprache wie SQL verwendet haben, aber C # -Erfahrung haben, ist die Methodensyntax möglicherweise leichter zu lesen. Für mindestens einige Operationen, z. B.: das Zählen der Elemente im Ergebnis der Abfrage, müssen Sie die Methodensyntax verwenden.
Lambda-Ausdrücke
Im Beispiel mit der Methodensyntax könnten Sie etwas bemerken, das Sie noch nicht gesehen haben, als Parameter für die Methode Where(). Sie sieht aus wie das:
name => name.Length <= 8
Sie werden als Lambda-Ausdruck bezeichnet, und obwohl es keine bestimmte LINQ-Funktionalität ist, wird es in der Welt von LINQ verwendet. Daher werden Sie es auch in den folgenden Artikeln sehen, und während ich in einem anderen Artikel auf Lambda Expressions näher eingehen werde, ist dies ein guter Zeitpunkt, um ein grundlegendes Verständnis davon zu bekommen, wie sie funktionieren.
Es ist eigentlich ganz einfach. Ein Lambda-Ausdruck hat eine linke Seite und eine rechte Seite, geteilt durch den Operator => (nicht zu verwechseln mit dem Operator "größer als oder gleich"), der folgendermaßen aussieht: >=).
Auf der linken Seite haben wir die Eingabeparameter - es können mehrere sein, aber in unserem Beispiel gibt es nur eine, nämlich die Variable name. In diesem Fall kommt es von der Methode Where(), wenn wir über unsere Liste von Namen iterieren und wir den Namen auswählen können. Ich habe "name" gewählt, weil Sie das in einer Liste von Namen finden, aber Sie könnten es auch "x", "z", "foobar" oder irgendetwas anderes nennen.
Auf der rechten Seite haben wir den Ausdruck / Anweisungsteil. Hier erzeugen wir das erwartete Ergebnis - in diesem Fall ein boolescher Wert, der der Where() -Methode mitteilt, ob der fragliche Name enthalten sein soll oder nicht. Wir antworten darauf mit einem Ausdruck und sagen, dass wir den Namen aufnehmen wollen, wenn er eine Länge von 8 (oder weniger) Zeichen hat. Wir können (müssen aber nicht) die Eingabe (linke Seite) verwenden, um dies zu bestimmen. Wiederum bezeichnen wir es als "Name", aber wir hätten es stattdessen "x" nennen können - in diesem Fall hätte die Aussage so ausgesehen:
var mNames = listOfNames.Where(x => x.Length <= 8);
Lambda Expressions sind mehr als nur LINQ-Abfragen, aber wie erwähnt, sind sie wichtig, wenn Sie LINQ verwenden - Sie werden das in den nächsten Artikeln sehen. Wenn Sie mehr über Lambda Expressions im Allgemeinen erfahren möchten, schauen Sie sich in diesem Tutorial woanders um, wo das Thema behandelt wird.
Zusammenfassung
LINQ gibt es in zwei syntaktischen Varianten: Die Abfrage- und die Methodensyntax. Sie können fast dasselbe tun, aber während die Abfragesyntax in C# fast eine neue Sprache ist, sieht die Methodensyntax wie normale C# -Methodenaufrufe aus. In diesem Tutorial verwenden wir hauptsächlich die Methodensyntax, wenn wir in den nächsten Artikeln alle möglichen Operationen besprechen, die mit LINQ zur Verfügung stehen.