Từ khóa let, into trong LINQ

Từ khóa let trong LINQ

Từ khóa let rất hữu ích trong cú pháp truy vấn. Nó tạo ra một biến phạm vi mới, cho phép sử dụng lại biểu thức và làm cho truy vấn dễ đọc hơn.

Ví dụ: bạn có thể so sánh các giá trị chuỗi và chọn giá trị chuỗi chữ thường như dưới đây:

IList<Student> studentList = new List<Student>() 
{ 
    new Student() { StudentID = 1, StudentName = "John", Age = 13 },
    new Student() { StudentID = 2, StudentName = "Steve", Age = 15 },
    new Student() { StudentID = 3, StudentName = "Bill", Age = 18 },
    new Student() { StudentID = 4, StudentName = "Ram", Age = 12 },
    new Student() { StudentID = 5, StudentName = "Ron", Age = 21 } 
};
            
var lowercaseStudentNames = from s in studentList
                            where s.StudentName.ToLower().StartsWith("r")
                            select s.StudentName.ToLower();

Như bạn có thể thấy, phương thức ToLower() được sử dụng nhiều lần trong truy vấn trên.

Ví dụ sau sử dụng từ khóa let để tạo biến mới có tên 'lowcaseStudentName' để lưu trữ tạm thời tên viết thường của sinh viên, sau đó có thể sử dụng biến này ở bất cứ nơi nào.

IList<Student> studentList = new List<Student>() 
{ 
    new Student() { StudentID = 1, StudentName = "John", Age = 13 },
    new Student() { StudentID = 2, StudentName = "Steve", Age = 15 },
    new Student() { StudentID = 3, StudentName = "Bill", Age = 18 },
    new Student() { StudentID = 4, StudentName = "Ram", Age = 12 },
    new Student() { StudentID = 5, StudentName = "Ron", Age = 21 } 
};
            
var lowercaseStudentNames = from s in studentList
                            let lowercaseStudentName = s.StudentName.ToLower()
                            where lowercaseStudentName.StartsWith("r")
                            select lowercaseStudentName;

foreach (var name in lowercaseStudentNames)
{
    Console.WriteLine(name);
}

Đây là kết quả khi biên dịch và thực thi chương trình:

ram
ron

Vì vậy, từ khóa let được sử dụng để làm cho truy vấn dễ đọc hơn.

Từ khóa into trong LINQ

Từ khóa into được sử dụng để tiếp tục truy vấn sau mệnh đề select. Ví dụ dưới đây minh họa sử dụng từ khóa into trong LINQ:

IList<Student> studentList = new List<Student>() 
{ 
    new Student() { StudentID = 1, StudentName = "John", Age = 13 },
    new Student() { StudentID = 2, StudentName = "Steve", Age = 15 },
    new Student() { StudentID = 3, StudentName = "Bill", Age = 18 },
    new Student() { StudentID = 4, StudentName = "Ram", Age = 12 },
    new Student() { StudentID = 5, StudentName = "Ron", Age = 21 } 
};

var teenAgerStudents = from s in studentList
                       where s.Age > 12 && s.Age < 20
                       select s
                            into teenStudent
                            where teenStudent.StudentName.StartsWith("B")
                            select teenStudent;
                            
foreach (var student in teenAgerStudents)
{
    Console.WriteLine("Name: {0} - Age: {1}", student.StudentName, student.Age);
}

Đây là kết quả khi biên dịch và thực thi chương trình:

Name: Bill - Age: 18

Trong ví dụ trên, từ khóa into đã tạo một biến phạm vi mới tên là teenStudent. Do biến phạm vi đầu tiên s đã nằm ngoài phạm vi nên bạn có thể viết thêm truy vấn sau từ khóa into sử dụng biến phạm vi mới.

LINQ
Bài Viết Liên Quan:
Truy vấn LINQ phức tạp
Trung Nguyen 23/04/2020
Truy vấn LINQ phức tạp

Bạn sẽ tìm hiểu một số truy vấn LINQ phức tạp trong hướng dẫn này.

Thực thi truy vấn LINQ
Trung Nguyen 23/04/2020
Thực thi truy vấn LINQ

Trì hoãn thực thi truy vấn LINQ là gì? Thực thi ngay lập tức truy vấn LINQ là gì? Làm sao để thực thi truy vấn LINQ.

Expression trong LINQ
Trung Nguyen 23/04/2020
Expression trong LINQ

Expression trong LINQ là gì? Cây biểu thức trong LINQ là gì? Cách khai báo và sử dụng chúng trong LINQ.

Toán tử chuyển đổi trong LINQ
Trung Nguyen 22/04/2020
Toán tử chuyển đổi trong LINQ

Toán tử chuyển đổi trong LINQ là gì? Làm sao để khai báo và sử dụng toán tử chuyển đổi trong LINQ.