Ngôn ngữ LINQ - Cú pháp phương thức
Cú pháp phương thức LINQ
Cú pháp phương thức LINQ sử dụng các phương thức mở rộng có trong hai lớp tĩnh là Enumerable hoặc Queryable, tương tự như cách bạn sẽ gọi các phương thức mở rộng của một lớp bất kỳ.
Ví dụ dưới đây minh họa một truy vấn sử dụng cú pháp phương thức LINQ trả về những chuỗi có chứa một từ "Tutorials".
// string collection
IList<string> stringList = new List<string>()
{
"C# Tutorials",
"VB.NET Tutorials",
"Learn C++",
"MVC Tutorials" ,
"Java"
};
// LINQ Query Syntax
var result = stringList.Where(s => s.Contains("Tutorials")).ToList();
foreach(var item in result)
{
Console.WriteLine(item);
}
Đây là kết quả khi biên dịch và thực thi chương trình trên:
C# Tutorials
VB.NET Tutorials
MVC Tutorials
Hình dưới đây minh họa cấu trúc của cú pháp phương thức LINQ.
Như bạn có thể thấy trong hình trên, cú pháp phương thức LINQ bao gồm các phương thức mở rộng và biểu thức lambda. Phương thức mở rộng Where
được định nghĩa trong lớp Enumerable.
Nếu bạn kiểm tra chữ ký của phương thức mở rộng Where
, bạn sẽ thấy phương thức này chấp nhận một predicate delegate là Func<Student, bool>.
Điều này có nghĩa là bạn có thể truyền bất kỳ phương thức nào chấp nhận đối tượng Student làm tham số đầu vào và trả về giá trị Boolean như trong hình dưới đây.
Biểu thức lambda hoạt động như một delegate được truyền vào phương thức Where.
Ví dụ sau đây minh họa cách sử dụng cú pháp phương thức LINQ với danh sách IEnumerable<T>.
// Student collection
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 Method Syntax to find out teenager students
var result = studentList.Where(s => s.Age > 12 && s.Age < 20)
.ToList();
foreach(var item in result)
{
Console.WriteLine(item.StudentName);
}
Đây là kết quả khi biên dịch và thực thi chương trình trên:
John
Bill
Ron
Những điểm cần nhớ của cú pháp phương thức LINQ
- Cú pháp phương thức LINQ giống như gọi phương thức mở rộng.
- Cú pháp phương thức LINQ còn gọi là cú pháp thông thạo (fluent syntax) vì nó cho phép thực hiện hàng loạt các phương thức mở rộng.
- Biến được định kiểu ngầm định -
var
có thể được sử dụng để lưu trữ kết quả của truy vấn LINQ.