Join
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
-
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); -
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).
-
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