CodeBlanks Logo Icon CodeBlanks

Join

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

Join ile iki koleksiyonu anahtarla birleştirmeyi öğrenirsin.

Join ile birleştirme

Join iki diziyi bir anahtar üzerinden birleştirir; yalnızca eşleşen çiftleri üretir (iç birleşim). Dört parametre alır: dış dizi, iç dizi, dış anahtar seçici, iç anahtar seçici ve sonuç seçici.

Örnek: people.Join(cities, p => p.CityId, c => c.Id, (p, c) => ...). Her kişi, CityId eşleşen şehirle birlikte gelir. Eşleşmeyen elemanlar sonuçta yer almaz.

İç birleşim davranışı

Join bir iç birleşim (inner join) yapar: yalnızca her iki dizide de eşleşmesi olan elemanlar sonuçta yer alır. Eşleşmeyen elemanlar sessizce bırakılır.

Sonuç sırası dış dizinin sırasını izler; her dış eleman için eşleşen iç elemanlar iç dizinin sırasıyla gelir. Büyük dizilerde Join bir hash tablosu kurar ve O(n+m) zaman harcar.

Uygulama Kişileri şehirlerle birleştir

Aşağıdaki people ve cities listelerini Join ile CityId/Id üzerinden birleştir. Her kişi için kişi adı - şehir adı biçiminde Console.WriteLine ile yazdır.

Örnek çözümü göster
people.Join(cities, p => p.CityId, c => c.Id, (p, c) => p.Name + " - " + c.Name); ile birleştir. foreach ile her sonucu yazdır.
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.Linq;

class Person
{
    public string Name { get; set; }
    public int CityId { get; set; }
}

class City
{
    public int Id { get; set; }
    public string Name { get; set; }
}

class Program
{
    static void Main()
    {
        var people = new List<Person>
        {
            new Person { Name = "Ayşe", CityId = 1 },
            new Person { Name = "Ali", CityId = 2 }
        };
        var cities = new List<City>
        {
            new City { Id = 1, Name = "İstanbul" },
            new City { Id = 2, Name = "Ankara" }
        };
        var result = people.Join(cities, p => p.CityId, c => c.Id, (p, c) => p.Name + " - " + c.Name);
        foreach (var r in result)
        {
            Console.WriteLine(r);
        }
    }
}

Kendini test et

  1. Join çağrısını tamamla

    var result = people.____(cities, p => p.CityId, c => c.Id, (p, c) => p.Name);
    Cevabı göster
    var result = people.Join(cities, p => p.CityId, c => c.Id, (p, c) => p.Name);
  2. Join ne üretir?

    • Yalnız dış diziyi
    • Eşleşen çiftleri
    • Tüm dış ve iç elemanları
    • Gruplar
    Cevabı göster

    Eşleşen çiftleri — Doğru. Join yalnızca eşleşen çiftleri üretir (iç birleşim).

  3. Parametreyi rolüne eşle

    Dış dizi
    Soldan gelen
    İç dizi
    Sağdan gelen
    Dış anahtar
    Dış elemanın anahtarı
    Sonuç seçici
    Çiftten ne üretilecek

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