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

เมธอด Linq Zip ใน C#


ภาพรวม

เมธอด 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>