在C#中,我们可以使用多种方法对集合进行聚合操作(aggregate operations)。聚合操作通常涉及将集合中的元素组合成一个单一的值,比如求和、求平均值、计数、最大值、最小值等。
以下是一些常用的聚合操作方法及其示例:
使用 LINQ 进行聚合操作
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.计数 (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 方法进行自定义聚合
Aggregate 方法允许你进行更复杂的聚合操作,通过提供一个自定义的聚合函数。
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 进行分组聚合
还可以使用 GroupBy 和 Select 方法进行分组聚合。例如,计算每个组中的平均值:
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 编辑过