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

วิธีวนลูปสองลิสต์หรืออาร์เรย์ด้วย foreach เดียวใน C#?

ใช้เมธอด Zip ของ LINQ รวมสองลำดับเป็นลำดับเดียวของ Anonymous Type หรือ Tuple แล้ววน Loop เพียงครั้งเดียว

ตัวอย่างโค้ด

using System;
using System.Collections.Generic;
using System.Linq;

public class Demo
{
    public static void Main()
    {
        var val = new[] { 20, 40, 60 };
        var str = new[] { "ele1", "ele2", "ele3" };
        
        // รวมเป็น Anonymous Type
        var res = val.Zip(str, (n, w) => new { Number = n, Word = w });
        
        foreach (var a in res)
        {
            Console.WriteLine(a.Number + a.Word);
        }
    }
}

ผลลัพธ์

20ele1
40ele2
60ele3

เงื่อนไข: สองลำดับต้องมีความยาวเท่ากัน (Zip จะหยุดที่ลำดับที่สั้นกว่า) ใน .NET 6+ มี overload Zip(..., third) สำหรับ 3 ลำดับ