English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
No capítulo anterior, você já aprendeu a sintaxe de consulta LINQ. Aqui, você aprenderá a sintaxe de método.
A sintaxe de método (também conhecida como sintaxe fluente) usa métodos de extensão contidos nas classes estáticas Enumerable ou Queryable, de maneira semelhante a como você chama métodos de extensão de qualquer classe.
O compilador converte a sintaxe de consulta no tempo de compilação.
A seguir está um exemplo de consulta de sintaxe de método LINQ que retorna um conjunto de strings contendo a palavra "Tutorials".
// Conjunto de strings IList<string> stringList = new List<string>() { "C# Tutorials", "VB.NET Tutorials", "Aprenda C++", "MVC Tutorials", "Java" }; // Sintaxe de consulta LINQ var result = stringList.Where(s => s.Contains("Tutorials"));
A figura a seguir ilustra a estrutura da sintaxe de método LINQ.
Como mostrado na figura, a sintaxe de método inclui métodos de extensão e expressões lambda. O método de extensão Where () definido na classe Enumerable.
Se você verificar a assinatura do método de extensão Where, verá que o método Where aceita um Delegado predicate Func<Student,bool>。Isso significa que você pode passar qualquer função de delegate que aceite um objeto Student como parâmetro de entrada e retorne um valor booleano, conforme mostrado na figura a seguir. A expressão lambda é usada como delegate passada para a cláusula Where. No próximo capítulo, você aprenderá sobre expressões lambda.
O exemplo a seguir demonstra como usar a sintaxe de método do LINQ com conjuntos IEnumerable <T>.
// Conjunto de Estudantes 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 } }; // A Sintaxe de Método LINQ encontra estudantes adolescentes var teenAgerStudents = studentList.Where(s => s.Age > 12 E s.Age < 20) .ToList<Student>();
// Conjunto de Estudantes 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} } // A Sintaxe de Método LINQ encontra estudantes adolescentes Dim teenAgerStudents As IList(Of Student) = studentList.Where(Function(s) s.Age > 12 E s.Age < 20) .ToList()
Como o próprio nome sugereSintaxe de MétodoÉ como chamar métodos de extensão.
LINQSintaxe de MétodoTambém conhecido como sintaxe Fluent (Fluente), pois permite uma série de chamadas de métodos de extensão.
Variável de Tipo Implícito-var pode ser usado para salvar o resultado da consulta LINQ.