在LINQ中,GroupBy方法用于根據指定的鍵將序列中的元素分組。它返回一個包含分組的元素的序列。GroupBy方法可以接受一個鍵選擇器函數,用于從序列的元素中提取鍵。以下是GroupBy方法的語法:
public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
this IEnumerable<TSource> source,
Func<TSource, TKey> keySelector
)
在上述語法中,source表示要分組的序列,keySelector是一個函數,它根據每個元素返回一個鍵。
以下是一個示例,演示如何使用GroupBy方法:
var students = new List<Student>()
{
new Student { Name = "John", Age = 20 },
new Student { Name = "Jane", Age = 19 },
new Student { Name = "Tom", Age = 20 },
new Student { Name = "Alice", Age = 19 },
new Student { Name = "Bob", Age = 21 }
};
var groupedStudents = students.GroupBy(s => s.Age);
foreach (var group in groupedStudents)
{
Console.WriteLine($"Age: {group.Key}");
foreach (var student in group)
{
Console.WriteLine($"Name: {student.Name}");
}
}
在上面的示例中,我們使用GroupBy方法根據學生的年齡將學生分組。然后,在foreach循環中,我們遍歷每個分組,并打印出年齡和學生的姓名。
輸出將如下所示:
Age: 20
Name: John
Name: Tom
Age: 19
Name: Jane
Name: Alice
Age: 21
Name: Bob
上述示例中的Student類定義如下:
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
請注意,GroupBy方法返回一個IEnumerable<IGrouping<TKey, TSource>>
,其中IGrouping<TKey, TSource>是一個表示具有相同鍵的元素的集合的接口。