ใช้เมธอด 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 ลำดับ