English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Im vorherigen Kapitel haben Sie die LINQ-Abfrage-Syntax kennengelernt. Hier lernen Sie die Methodensyntax kennen.
Die Methodensyntax (auch als kontinuierliche Syntax bezeichnet) verwendet Verlängerungsmethoden, die in den statischen Klassen Enumerable oder Queryable enthalten sind, auf ähnliche Weise wie Sie eine Verlängerungsmethode einer jeden Klasse aufrufen.
Der Compiler wandelt die Abfrage-Syntax bei der Kompilierung in die Methodensyntax um.
Nachfolgender Beispiel zeigt eine LINQ-Methode Syntax Abfrage, die eine Zeichenfolgenkolektion zurückgibt, die das Wort "Tutorials" enthält.
// Zeichenfolgenkolektion IList<string> stringList = new List<string>() { "C# Tutorials", "VB.NET Tutorials", "Lernen Sie C++", "MVC Tutorials", "Java" }; // LINQ-Abfrage-Syntax var result = stringList.Where(s => s.Contains("Tutorials"));
Das folgende Bild erläutert die Struktur der LINQ-Methode Syntax.
Wie im obigen Bild gezeigt, umfasst die Methodensyntax Verlängerungsmethoden und Lambda-Ausdrücke. Die Verlängerungsmethode Where () wurde in der Enumerationsklasse (Enumerable) definiert.
Wenn Sie die Signatur des Where-Verlängerungsmethoden überprüfen, sehen Sie, dass der Where-Methodenaufruf eine Predicate-Delegat Func<Student,bool>。Das bedeutet, dass Sie jede Delegatefunktion übergeben können, die einen Student-Objekt als Eingangsparameter akzeptiert und einen Boolean-Wert zurückgibt, wie im folgenden Beispiel gezeigt. Lambda-Ausdrücke werden als Delegat im Where-Ausdruck übergeben. Im nächsten Kapitel lernen Sie Lambda-Ausdrücke kennen.
Nachfolgender Beispiel zeigt, wie die LINQ-Methode Syntax mit IEnumerable <T>-Kollektionen verwendet wird.
// Studienkollektiv IList<Student> studentList = new List<Student>() { new Student() { .StudentID = 1, StudentName = "John", Age = 13} new Student() { .StudentID = 2, StudentName = "Moin", Age = 21 } new Student() { .StudentID = 3, .StudentName = "Bill", Age = 18 } new Student() { .StudentID = 4, .StudentName = "Ram", .Age = 20} , new Student() { .StudentID = 5, .StudentName = "Ron", .Age = 15 } }; // LINQ-Methodensyntax finden Sie jugendliche Schüler var teenAgerStudents = studentList.Where(s => s.Age > 12 Und && s.Age < 20) .ToList<Student>();
// Studienkollektiv Dim studentList = New List(Of Student) From { New Student() With {.StudentID = 1, .StudentName = "John", .Age = 13} New Student() With {.StudentID = 2, .StudentName = "Moin", .Age = 21} New Student() With {.StudentID = 3, .StudentName = "Bill", .Age = 18} New Student() With {.StudentID = 4, .StudentName = "Ram", .Age = 20}, New Student() With {.StudentID = 5, .StudentName = "Ron", .Age = 15} } // LINQ-Methodensyntax finden Sie jugendliche Schüler Dim teenAgerStudents As IList(Of Student) = studentList.Where(Function(s) s.Age > 12 Und s.Age < 20) .ToList()
Wie der Name schon sagt,Methodensyntaxfunktioniert so, als würde man eine Erweiterungsmethode aufrufen.
LINQMethodensyntaxauch als Fluent-Syntax (fließende Syntax) bezeichnet, da sie eine Reihe von Erweiterungsmethodenaufrufen ermöglicht.
Implizit typisierte Variablen-var kann verwendet werden, um das Ergebnis der LINQ-Abfrage zu speichern.