Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด Aggregate() ใน C#: การคำนวณสะสมบนลำดับข้อมูล

เมธอด Aggregate() ใน System.Linq ใช้สำหรับดำเนินการคำนวณสะสม (accumulation) บนลำดับข้อมูล โดยนำฟังก์ชันที่กำหนดไปประยุกต์ใช้กับองค์ประกอบแต่ละคู่ตามลำดับ เพื่อสร้างค่าผลลัพธ์เดียว สามารถใช้แทนการเขียนลูปสำหรับการคำนวณต่างๆ เช่น ผลรวม ผลคูณ ค่าสูงสุด/ต่ำสุด และอื่นๆ

รูปแบบพื้นฐาน

TResult Aggregate(
    IEnumerable source,
    Func func
)

ตัวอย่าง: การคูณค่าทั้งหมดในอาร์เรย์

int[] arr = { 10, 15, 20 };
int product = arr.Aggregate((x, y) => x * y); // 10 * 15 * 20 = 3000

โค้ดตัวอย่างสมบูรณ์

using System;
using System.Linq;

public class Demo
{
    public static void Main()
    {
        int[] arr = { 10, 15, 20 };
        
        // การคูณสะสม
        int product = arr.Aggregate((x, y) => x * y);
        Console.WriteLine($"ผลคูณ: {product}"); // 3000
        
        // ตัวอย่างเพิ่มเติม: การหาค่าสูงสุด
        int max = arr.Aggregate((x, y) => x > y ? x : y);
        Console.WriteLine($"ค่าสูงสุด: {max}"); // 20
        
        // ตัวอย่าง: การสร้างสตริงจากอาร์เรย์
        string[] words = { "Hello", "World", "C#" };
        string combined = words.Aggregate((x, y) => x + " " + y);
        Console.WriteLine($"รวมข้อความ: {combined}"); // "Hello World C#"
    }
}

ผลลัพธ์

ผลคูณ: 3000
ค่าสูงสุด: 20
รวมข้อความ: Hello World C#

รูปแบบขั้นสูง: ระบุค่าเริ่มต้น (Seed)

// เริ่มต้นจากค่า 100 แล้วคูณต่อ
int result = arr.Aggregate(100, (x, y) => x * y); // 100 * 10 * 15 * 20 = 300000

หมายเหตุ

  • เหมาะสำหรับการคำนวณที่ต้องใช้ค่าก่อนหน้าในการคำนวณค่าถัดไป
  • สำหรับการคำนวณพื้นฐาน (Sum, Min, Max, Average) ควรใช้เมธอดเฉพาะทางเพื่อประสิทธิภาพและความอ่านง่ายกว่า
  • ต้องระวัง OverflowException สำหรับชนิดข้อมูลที่มีขอบเขตจำกัด