在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é)合使用。