linq中g(shù)roupby的用法是什么

小億
161
2024-01-13 22:25:27
欄目: 編程語言

在LINQ中,GroupBy方法用于根據(jù)指定的鍵將序列中的元素分組。它返回一個(gè)包含分組的元素的序列。GroupBy方法可以接受一個(gè)鍵選擇器函數(shù),用于從序列的元素中提取鍵。以下是GroupBy方法的語法:

public static IEnumerable<IGrouping<TKey, TSource>> GroupBy<TSource, TKey>(
    this IEnumerable<TSource> source,
    Func<TSource, TKey> keySelector
)

在上述語法中,source表示要分組的序列,keySelector是一個(gè)函數(shù),它根據(jù)每個(gè)元素返回一個(gè)鍵。

以下是一個(gè)示例,演示如何使用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方法根據(jù)學(xué)生的年齡將學(xué)生分組。然后,在foreach循環(huán)中,我們遍歷每個(gè)分組,并打印出年齡和學(xué)生的姓名。

輸出將如下所示:

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; }
}

請(qǐng)注意,GroupBy方法返回一個(gè)IEnumerable<IGrouping<TKey, TSource>>,其中IGrouping<TKey, TSource>是一個(gè)表示具有相同鍵的元素的集合的接口。

0