c#的group操作與聚合函數(shù)的結(jié)合使用

c#
小樊
81
2024-09-20 08:13:25

在C#中,我們可以使用LINQ(Language Integrated Query)查詢(xún)來(lái)實(shí)現(xiàn)對(duì)集合的分組(group)操作以及聚合函數(shù)(如Sum、Average、Min、Max等)的結(jié)合使用

首先,假設(shè)我們有一個(gè)Person類(lèi),如下所示:

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

接下來(lái),我們創(chuàng)建一個(gè)List<Person>來(lái)存儲(chǔ)一些示例數(shù)據(jù):

var people = new List<Person>
{
    new Person { Id = 1, Name = "Alice", Age = 30 },
    new Person { Id = 2, Name = "Bob", Age = 25 },
    new Person { Id = 3, Name = "Charlie", Age = 35 },
    new Person { Id = 4, Name = "David", Age = 28 },
    new Person { Id = 5, Name = "Eva", Age = 32 },
};

現(xiàn)在,我們想要根據(jù)年齡對(duì)這些人進(jìn)行分組,并計(jì)算每個(gè)年齡組的總年齡。我們可以使用LINQ查詢(xún)和聚合函數(shù)結(jié)合GroupBy方法來(lái)實(shí)現(xiàn)這個(gè)需求:

var ageGroupResult = people
    .GroupBy(p => p.Age)
    .Select(g => new
    {
        AgeGroup = g.Key,
        TotalAge = g.Sum(p => p.Age)
    })
    .ToList();

在這個(gè)查詢(xún)中,我們首先使用GroupBy方法根據(jù)年齡對(duì)people列表進(jìn)行分組。然后,我們使用Select方法來(lái)選擇每個(gè)年齡組及其總年齡(使用Sum聚合函數(shù)計(jì)算)。最后,我們將結(jié)果轉(zhuǎn)換為一個(gè)新的匿名類(lèi)型列表并輸出。

運(yùn)行這段代碼,你將得到以下輸出:

AgeGroup = 25, TotalAge = 28
AgeGroup = 28, TotalAge = 28
AgeGroup = 30, TotalAge = 30
AgeGroup = 32, TotalAge = 32
AgeGroup = 35, TotalAge = 35

這樣,我們就實(shí)現(xiàn)了C#中分組操作與聚合函數(shù)的結(jié)合使用。

0