Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Phương thức Aggregate trong C#


Giới thiệu

Phương thức Aggregate() trong LINQ cho phép thực hiện các phép tính tích lũy (accumulation) trên một chuỗi giá trị. Nó áp dụng một hàm tích lũy lên các phần tử để tính toán một kết quả đơn lẻ như tổng, tích, min, max, trung bình, v.v.

Ví dụ: Tính tích các phần tử

Mảng đầu vào:

int[] arr = { 10, 15, 20 };

Sử dụng Aggregate() để nhân các phần tử:

arr.Aggregate((x, y) => x * y);

Ví dụ hoàn chỉnh

using System;
using System.Linq;

public class Demo
{
    public static void Main()
    {
        int[] arr = { 10, 15, 20 };
        // Tính tích: 10 * 15 * 20 = 3000
        int res = arr.Aggregate((x, y) => x * y);
        Console.WriteLine(res);
    }
}

Kết quả

3000

Các nạp chồng khác

Aggregate() có các nạp chồng hỗ trợ:

  • Aggregate(Func<T, T, T>) - như ví dụ trên.
  • Aggregate(TAccumulate, Func<TAccumulate, T, TAccumulate>) - cho phép giá trị khởi tạo (seed).
  • Aggregate(TAccumulate, Func<TAccumulate, T, TAccumulate>, Func<TAccumulate, TResult>) - có thêm hàm chọn kết quả cuối.

Ví dụ với seed (giá trị khởi tạo)

// Tính tổng với giá trị khởi tạo = 100
int sum = arr.Aggregate(100, (acc, x) => acc + x); // 100 + 10 + 15 + 20 = 145

Lưu ý

  • Với mảng rỗng, nạp chồng không có seed sẽ ném InvalidOperationException.
  • Hiệu suất tốt cho các phép tính đơn giản, nhưng với các phép phức tạp có thể cân nhắc dùng vòng lặp foreach.