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