CodeBlanks Logo Icon CodeBlanks

Zip

C# kursu · İleri seviye · Ders 29/83

Zip ile iki koleksiyonu paralel birleştirmeyi öğrenirsin.

Zip ile paralel birleştirme

Zip iki diziyi indeks bazında birleştirir; her adımda her iki diziden birer eleman alır ve bir sonuç üretir. Sonuç dizisinin uzunluğu kısa olanınkadır.

Örnek: names.Zip(ages, (n, a) => n + " " + a) her indekste isim ve yaşı birleştirir. Bir dizi daha kısaysa Zip o uzunlukta durur; fazlalık atılır.

Sonuç seçici

Zip'in sonuç seçicisi iki parametre alır: birinci dizinin elemanı ve ikinci dizinin elemanı. Dönüş değeri her çift için üretilen sonuçtur. Türü istediğin gibi seçebilirsin.

.NET 6 ve sonrasında Zip sonuç seçicisiz de çağrılabilir; o zaman her çifti bir tuple olarak verir: names.Zip(ages) → IEnumerable<(string, int)>.

Uygulama İsim ve yaşları Zip'le

Aşağıdaki names ve ages listelerini Zip ile birleştir. Her çifti isim yaş biçiminde Console.WriteLine ile yazdır.

Örnek çözümü göster
var pairs = names.Zip(ages, (n, a) => n + " " + a); ile birleştir. foreach (var p in pairs) Console.WriteLine(p); yaz.
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        var names = new List<string> { "Ayşe", "Ali" };
        var ages = new List<int> { 30, 25 };
        var pairs = names.Zip(ages, (n, a) => n + " " + a);
        foreach (var p in pairs)
        {
            Console.WriteLine(p);
        }
    }
}

Kendini test et

  1. Metodu davranışa eşle

    Zip
    İndeks bazlı çift
    Join
    Anahtarla birleşim
    Aggregate
    Tek değere katla
    GroupBy
    Anahtara göre grupla
  2. Zip farklı uzunlukta dizilerde?

    • Kısa olanın uzunluğunda durur
    • Hata fırlatır
    • Uzun olanın uzunluğunda devam eder
    • Yalnız ilk elemanı alır
    Cevabı göster

    Kısa olanın uzunluğunda durur — Doğru. Zip kısa dizi bitince durur; fazlalık atılır.

  3. Zip çağrısını tamamla

    var pairs = names.____(ages, (n, a) => n + " " + a);
    Cevabı göster
    var pairs = names.Zip(ages, (n, a) => n + " " + a);

İleri seviye bölümündeki tüm dersler