English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Nel capitolo precedente, hai già familiarizzato con la sintassi della query LINQ. Ora, imparerai la sintassi dei metodi.
La sintassi dei metodi (noto anche come sintassi fluente) utilizza i metodi di estensione contenuti nelle classi statiche Enumerable o Queryable, allo stesso modo in cui si chiamano i metodi di estensione di qualsiasi classe.
Il compilatore converte la sintassi della query durante la compilazione in sintassi dei metodi.
Di seguito è riportato un esempio di query di sintassi dei metodi LINQ che restituisce una raccolta di stringhe contenente la parola “Tutorials”.
// 字符串集合 IList<string> stringList = new List<string>() { "C# Tutorials", "VB.NET Tutorials", "Impara C++", "MVC Tutorials", "Java" }; // Sintassi della query LINQ var result = stringList.Where(s => s.Contains("Tutorials"));
La figura sottostante spiega la struttura della sintassi dei metodi LINQ.
Come illustrato nella figura, la sintassi dei metodi include l'estensione e l'espressione lambda. L'estensione Where definita nella classe Enumerabile (Enumerable).
Se si esamina la firma dell'estensione Where, si noterà che il metodo Where accetta un Delegato predicate Func<Student, bool> . Questo significa che puoi passare qualsiasi funzione delegata che accetta come parametro un oggetto Student e restituisce un valore booleano, come indicato nella figura sottostante. L'espressione lambda viene utilizzata come funzione delegata passata alla clausola Where. Verrà trattato il Lambda Expression nel prossimo capitolo.
Esempio: come utilizzare la sintassi dei metodi LINQ con la raccolta IEnumerable <T>.
// Set di studenti 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 } }; // Trova studenti adolescenti con la sintassi di metodo LINQ var teenAgerStudents = studentList.Where(s => s.Age > 12 && s.Age < 20) .ToList<Student>();
// Set di studenti 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} } // Trova studenti adolescenti con la sintassi di metodo LINQ Dim teenAgerStudents As IList(Of Student) = studentList.Where(Function(s) s.Age > 12 And s.Age < 20) .ToList()
Come dice il nome stesso,Sintassi di metodoÈ come chiamare un metodo esteso.
LINQSintassi di metodoNoto anche come sintassi Fluent (sintassi continua), poiché permette una serie di chiamate a metodi estesi.
La variabile di tipo implicito -var può essere utilizzata per salvare i risultati della query LINQ.