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

Xem ví dụ


Những điểm cần nhớ về toán tử nhóm trong LINQ

  1. 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.
  2. Việc thực thi GroupBy được hoãn lại trong khi đó ToLookup là ngay lập tức.
  3. Cú pháp truy vấn LINQ có thể kết thúc bằng mệnh đề groupby hoặc select.