在C#中,我們可以使用多種方法對集合進(jìn)行聚合操作(aggregate operations)。聚合操作通常涉及將集合中的元素組合成一個單一的值,比如求和、求平均值、計數(shù)、最大值、最小值等。
以下是一些常用的聚合操作方法及其示例:
使用 LINQ 進(jìn)行聚合操作
1.求和 (Sum)
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int sum = numbers.Sum();
Console.WriteLine("Sum: " + sum);
}
}
2.求平均值 (Average)
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
double average = numbers.Average();
Console.WriteLine("Average: " + average);
}
}
3.計數(shù) (Count)
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int count = numbers.Count();
Console.WriteLine("Count: " + count);
}
}
4.最大值 (Max)
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int max = numbers.Max();
Console.WriteLine("Max: " + max);
}
}
5.最小值 (Min)
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int min = numbers.Min();
Console.WriteLine("Min: " + min);
}
}
使用 Aggregate 方法進(jìn)行自定義聚合
Aggregate 方法允許你進(jìn)行更復(fù)雜的聚合操作,通過提供一個自定義的聚合函數(shù)。
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int product = numbers.Aggregate((a, b) => a * b);
Console.WriteLine("Product: " + product);
}
}
在這個例子中,Aggregate 方法將集合中的元素相乘,返回一個單一的值(乘積)。
使用 GroupBy 和 Select 進(jìn)行分組聚合
還可以使用 GroupBy 和 Select 方法進(jìn)行分組聚合。例如,計算每個組中的平均值:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
List<Person> people = new List<Person>
{
new Person { Name = "Alice", Age = 30 },
new Person { Name = "Bob", Age = 25 },
new Person { Name = "Charlie", Age = 30 },
new Person { Name = "David", Age = 20 }
};
var groupedByAge = people.GroupBy(p => p.Age)
.Select(g => new { Age = g.Key, AverageHeight = g.Average(p => p.Height) })
.ToList();
foreach (var group in groupedByAge)
{
Console.WriteLine($"Age: {group.Age}, Average Height: {group.AverageHeight}");
}
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public double Height { get; set; } = 170.0;
}
在這個例子中,我們按年齡分組,并計算每個年齡組中人的平均身高。
該文章在 2024/12/19 10:52:47 編輯過