Ngôn ngữ LINQ - Toán tử ToLookup
Toán tử nhóm ToLookup trong LINQ
ToLookup cũng giống như GroupBy; sự khác biệt duy nhất là việc thực thi GroupBy bị hoãn lại, trong khi thực thi ToLookup là ngay lập tức.
Ngoài ra, ToLookup chỉ được áp dụng theo cú pháp phương thức LINQ. ToLookup không được hỗ trợ trong cú pháp truy vấn LINQ.
Dưới đây là ví dụ minh họa sử dụng ToLookup trong LINQ:
// Student collection
IList<Student> studentList = new List<Student>()
{
new Student() { StudentID = 1, StudentName = "John", Age = 18 },
new Student() { StudentID = 2, StudentName = "Steve", 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 = 21 }
};
var groupedResult = studentList.ToLookup(s => s.Age);
//iterate each group
foreach (var ageGroup in groupedResult)
{
//Each group has a key
Console.WriteLine("Age Group: {0}", ageGroup.Key);
// Each group has inner collection
foreach(Student s in ageGroup)
{
Console.WriteLine("Student Name: {0}", s.StudentName);
}
}
Đây là kết quả khi biên dịch và thực thi chương trình:
Age Group: 18
Student Name: John
Student Name: Bill
Age Group: 21
Student Name: Steve
Student Name: Ron
Age Group: 20
Student Name: Ram
Những điểm cần nhớ về toán tử nhóm trong LINQ
- GroupBy và ToLookup trả về một danh sách có khóa và danh sách bên trong dựa trên giá trị trường khóa.
- Việc thực thi GroupBy được hoãn lại trong khi đó ToLookup là ngay lập tức.
- Cú pháp truy vấn LINQ có thể kết thúc bằng mệnh đề
groupby
hoặcselect
.