在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 编辑过