English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

LINQ-Methodensyntax

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.

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.

Func im Where

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()

 Punkte zu beachten

  1. Wie der Name schon sagt,Methodensyntaxfunktioniert so, als würde man eine Erweiterungsmethode aufrufen.

  2. LINQMethodensyntaxauch als Fluent-Syntax (fließende Syntax) bezeichnet, da sie eine Reihe von Erweiterungsmethodenaufrufen ermöglicht.

  3. Implizit typisierte Variablen-var kann verwendet werden, um das Ergebnis der LINQ-Abfrage zu speichern.