English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Es gibt zwei grundlegende Methoden, um LINQ-Abfragen in eine IEnumerable-Sammlung oder in einen IQueryable-Datenquelle zu schreiben.
Abfragesyntax oder Abfrageausdrucksyntax
Methodensyntax oder Methoden-Erweiterungssyntax oder Kontinuierliche Syntax
Abfragesyntax ähnelt der SQL (structurierte Abfragesprache) für Datenbanken. Sie wird in C# oder VB.NET-Code definiert.
LINQ-Abfragesyntax:
von <range variable> in <IEnumerable<T> oder IQueryable<T> Collection> <Standard Query Operators> <lambda expression> <select or groupBy operator> <result formation>
Die LINQ-Abfragesyntax beginnt mit dem Schlüsselwort from und endet mit dem Schlüsselwort select. Ein Beispiel für eine LINQ-Abfrage ist gezeigt, die eine Zeichenfolgenkolllektion zurückgibt, die das Wort "Tutorials" enthält.
// Zeichenfolgenkolllektion IList<string> stringList = new List<string>() { "C# Tutorials", "VB.NET Tutorials", "Learn C++, "MVC Tutorials" , "Java" }; // LINQ-Abfragesyntax var result = from s in stringList where s.Contains("Tutorials") select s;
Das folgende Diagramm zeigt die Struktur der LINQ-Abfragesyntax.
Die Abfragesyntax beginnt mit einem FROM-Untersatz, gefolgt von einem Range-Variable. From Der Aufbau der Untersätze ähnelt "From rangeVariableName in i enumerablecollection”. Auf Englisch bedeutet das, von jedem Objekt in der Kollektion. Es ähnelt einem foreach-Loop: foreach(Student s in studentList).
Nach dem FROM-Untersatz können verschiedene Standardabfragesyntax-Operatoren verwendet werden, um Elemente in der Kollektion zu filtern, zu gruppieren und zu verknüpfen. Es gibt etwa50 Standardabfragesyntax-Operatoren. In der Abbildung haben wir den "where"-Operator (auch bekannt als Unteraussage) verwendet, gefolgt von einer Bedingung. Diese Bedingung wird normalerweise mit einem Lambda-Ausdruck ausgedrückt.
Die LINQ-Abfragesyntax endet immer mit einem Select- oder Group-Untersatz. Der Select-Untersatz wird zur Umwandlung von Daten verwendet. Sie können das gesamte Objekt so wählen, wie es ist, oder nur bestimmte Eigenschaften auswählen. Im obigen Beispiel haben wir die gesamten resultierenden String-Elemente ausgewählt.
Im folgenden Beispiel verwenden wir die LINQ-Abfragesyntax, um aus der Studenten-Kollektion ( Sequenz ) jugendliche Studenten zu finden.
// Studenten-Sammel 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-Abfrage-Syntax finden Sie Jugendliche Studenten var teenAgerStudent = from s in studentList where s.Age > 12 && s.Age < 20 select s;
// Studenten-Sammel 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-Abfrage-Syntax finden Sie Jugendliche Studenten Dim teenAgerStudents As IList(Of Student) = (From s In studentList _ Where s.Age > 12 And s.Age < 20 _ Select s).ToList()
Wie der Name schon sagt,Abfrage-Syntaxmit der SQL-(Strukturierter Abfrage-Sprache)-Syntax identisch.
Die Abfrage-Syntax ist wiefromBeginn des Satzes, kann mitSelectoderGroupByEnde des Satzes.
Verwenden Sie verschiedene andere Operatoren, wie z.B. Filterung, Verknüpfung, Gruppierung, Sortier-Operatoren, um das erforderliche Ergebnis zu konstruieren.
Implizit typisierte Variablen-var kann verwendet werden, um das Ergebnis der LINQ-Abfrage zu speichern.