ภาพรวม
เมธอด Zip() ใน LINQ ใช้ รวมสองลำดับ (sequences) เข้าด้วยกัน โดยจับคู่องค์ประกอบตามตำแหน่ง (index) และใช้ฟังก์ชัน predicate สร้างผลลัพธ์ใหม่ หยุดเมื่อลำดับใดลำดับหนึ่งหมด
รูปแบบการใช้งาน
int[] intArray = { 10, 20, 30, 40 };
string[] stringArray = { "Jack", "Tim", "Henry", "Tom" };
var merged = intArray.Zip(stringArray, (num, name) => num + " " + name);
ตัวอย่างโค้ดเต็ม
using System;
using System.Linq;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
int[] intArray = { 10, 20, 30, 40 };
string[] stringArray = { "Jack", "Tim", "Henry", "Tom" };
var mergedSeq = intArray.AsQueryable().Zip(stringArray, (one, two) => one + " " + two);
foreach (var ele in mergedSeq) Console.WriteLine(ele);
}
}
ผลลัพธ์
10 Jack 20 Tim 30 Henry 40 Tom
ข้อสังเกต
- ความยาวผลลัพธ์ = min(ความยาวลำดับที่ 1, ความยาวลำดับที่ 2)
- รองรับ overload:
Zip(IEnumerable , IEnumerable , Func ) - ใน .NET 6+ มี overload
Zip(IEnumerableคืนค่า, IEnumerable ) IEnumerable>