Grouping Operators | Description |
---|---|
GroupBy | GroupBy操作返回根據一些鍵值進行分組,每組代表IGrouping<TKey,TElement>對象 |
ToLookup | ToLookup is the same as GroupBy; the only difference is the execution of GroupBy is deferred whereas ToLookup execution is immediate. |
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 = "Abram" , Age = 21 } }; var groupedResult = from s in studentList group s by s.Age; //iterate each group foreach (var ageGroup in groupedResult) { Console.WriteLine("Age Group: {0}", ageGroup .Key); //Each group has a key foreach(Student s in ageGroup) // Each group has inner collection Console.WriteLine("Student Name: {0}", s.StudentName); }
可以使用foreach遍歷group,每個Group包含一個key和內部的集合
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 = "Abram" , Age = 21 } }; var groupedResult = studentList.GroupBy(s => s.Age); foreach (var ageGroup in groupedResult) { Console.WriteLine("Age Group: {0}", ageGroup.Key); //Each group has a key foreach(Student s in ageGroup) //Each group has a inner collection Console.WriteLine("Student Name: {0}", s.StudentName); }
ToLookup和GroupBy一樣,唯一不同的是GroupBy是延遲執行,而ToLookup是立即執行
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 = "Abram" , Age = 21 } }; var lookupResult = studentList.ToLookup(s => s.age); foreach (var group in lookupResult) { Console.WriteLine("Age Group: {0}", group.Key); //Each group has a key foreach(Student s in group) //Each group has a inner collection Console.WriteLine("Student Name: {0}", s.StudentName); }
注意:GroupBy和ToLookup返回一個集合(包含key,根據key分組的內部集合)