Yazılım.
CevapSitesi.com Beta!
Çözüm Noktası
Bu siteyi Facebook, Twitter, Google+ veya e-posta ile paylaşın.
| Sorular | Makaleler | Üyeler | Etiketler  | İletişim
Soru sormak ya da cevap vermek için;
giriş yapın veya üye olun.

Sosyal medya hesaplarınızla da giriş yapabilirsiniz.

0



LINQ - Temel İşlemler - Birleştirme (Joining)

Birleştirme, 2 farklı listedeki değerlerin ortak bir değere göre birleştirip tek bir liste oluşturma işidir. Bunun için join cümleciği kullanılır. LINQ'daki join doğrudan tablolardan değil, nesne koleksiyonları üzerinde çalışır.

Aşağıdaki örnek aynı şehirdeki müşteriler ve dağıtıcıların bir listesini verir.
  1. var birlestirilmisListe =
  2. from Musteri in Musteriler
  3. join Dagitici in Dagiticilar on Musteri.Sehir equals Dagitici.Sehir
  4. select new { MusteriAdi = Musteri.Adi, DagiticiAdi = Dagitici.Adi };
Örnekteki ifadeleri tek tek açıklayalım.

from Musteri in Musteriler

ifadesi musteriler isimli listeden seçim yapılacağını ve seçilene "musteri" isminin verilmesini,

join Dagitici in Dagiticilar

ifadesi ikinci olarak dagiticilar isimli listeden ayrıca seçim yapılacağını ve seçilene "dagitici" isminin verilmesini,

on

ifadesi iki listenin birleştirilme bilgisinin ne üzerinden yapılacağının kendisinden sonra bildirildiğini,

Musteri.Sehir equals Dagitici.Sehir

ifadesi, listelerde şehir bilgisi aynı olan (equals = eşittir) müşteriler ile dağıtıcıların seçilmesini,

select new { MusteriAdi = Musteri.Adi, DagiticiAdi = Dagitici.Adi };

ifadesi, seçilenlerin yeni bir isimsiz (anonim) nesne oluşturularak bu nesnede tek bir bilgi satırı haline dönüştürülmesini ve nesnenin MusteriAdi özelliği olarak müşterilerin adının, DagiticiAdi özelliği olarak dağıtıcının adının kullanılmasını bildirir.

Örneğin tamamı ve çıktısı şöyle.
  1. namespace LinQJoin1
  2. {
  3. class Program
  4. {
  5. public class Musteri
  6. {
  7. public string Adi { get; set; }
  8. public string Soyadi { get; set; }
  9. public string Sehir { get; set; }
  10. }
  11. public static List<Musteri> MusterileriGetir()
  12. {
  13. List<Musteri> Musteriler = new List<Musteri>
  14. {
  15. new Musteri {Adi="Kenan", Soyadi="Oran", Sehir="Muğla"},
  16. new Musteri {Adi="Erhan", Soyadi="Erkanlı", Sehir="Ankara"},
  17. new Musteri {Adi="Ercan", Soyadi="Orak", Sehir="Ankara"},
  18. new Musteri {Adi="Yaşar", Soyadi="Yılmaz", Sehir="Manisa"}
  19. };
  20. return Musteriler;
  21. }
  22. public class Dagitici
  23. {
  24. public string Adi { get; set; }
  25. public string Soyadi { get; set; }
  26. public string Sehir { get; set; }
  27. }
  28. public static List<Dagitici> DagiticilariGetir()
  29. {
  30. List<Dagitici> Dagiticilar = new List<Dagitici>
  31. {
  32. new Dagitici {Adi="Tekin", Soyadi="Uğurlu", Sehir="Van"},
  33. new Dagitici {Adi="Hasan", Soyadi="Ünlü", Sehir="Ankara"},
  34. new Dagitici {Adi="Tuncay", Soyadi="Çağrı", Sehir="Manisa"},
  35. new Dagitici {Adi="Mehmet", Soyadi="Emre", Sehir="Muğla"}
  36. };
  37. return Dagiticilar;
  38. }
  39. static void Main(string[] args)
  40. {
  41. List<Musteri> musteriler = MusterileriGetir();
  42. List<Dagitici> dagiticilar = DagiticilariGetir();
  43. var birlestirmeSorgusu =
  44. from musteri in musteriler
  45. join dagitici in dagiticilar on musteri.Sehir equals dagitici.Sehir
  46. select new { Sehir = musteri.Sehir,
  47. MusteriAdi = musteri.Adi,
  48. DagiticiAdi = dagitici.Adi
  49. };
  50. // LINQ Yöntem Sözdizimi ile sorgu :
  51. /*
  52. var birlestirmeSorgusu = musteriler.Join(
  53. dagiticilar,
  54. musteri => musteri.Sehir,
  55. dagitici => dagitici.Sehir,
  56. (musteri, dagitici) => new { Sehir = musteri.Sehir,
  57. MusteriAdi = musteri.Adi,
  58. DagiticiAdi = dagitici.Adi
  59. }
  60. );
  61. */
  62. Console.WriteLine("Şehir, Dağıtıcı - Müşteri");
  63. Console.WriteLine("-------------------------");
  64. foreach (var satir in birlestirmeSorgusu)
  65. {
  66. Console.WriteLine("{0}, {1} - {2}", satir.Sehir,
  67. satir.DagiticiAdi,
  68. satir.MusteriAdi);
  69. }
  70. Console.ReadKey();
  71. }
  72. }
  73. }
Çıktı :
  1. Şehir, Dağıtıcı - Müşteri
  2. -------------------------
  3. Muğla, Mehmet - Kenan
  4. Ankara, Hasan - Erhan
  5. Ankara, Hasan - Ercan
  6. Manisa, Tuncay - Yaşar
Not : Örneğimizdeki select cümleciğinde bir isimsiz sınıf kullandığımızdan foreach döngüsündeki satir değişkenini tip adını bilemeyeceğimizden dolayı mecburen var ile tanımlıyoruz (İsimsiz sınıfların isimleri derleyici tarafından derleme sırasında verilir).



Diğer LINQ Makaleleri:


Yazan: 09.04.16 20:49

101,387p 4ü