CodeBlanks Logo Icon CodeBlanks

GroupBy

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

GroupBy ile elemanları anahtara göre gruplamayı öğrenirsin.

GroupBy ile gruplama

GroupBy bir dizinin elemanlarını bir anahtara göre gruplar. Sonuç IEnumerable<IGrouping<K, T>>'tir; her grup bir anahtar (Key) ve o anahtara düşen elemanlar kümesidir.

Örnek: people.GroupBy(p => p.City) her şehir için bir grup verir. Grupları foreach ile gezip g.Key ve g.Count() okuyabilirsin. Anahtarlar ilk görünüş sırasına göre gelir.

Grupları gezmek

Bir IGrouping<K, T> nesnesi hem bir anahtar hem eleman dizisidir. g.Key anahtarı verir; g kendisi IEnumerable<T> olduğu için foreach veya Count() ile elemanlarına ulaşılır.

İç içe döngü de yazılabilir: dış döngü grupları, iç döngü her grubun elemanlarını gezer. Gruplar ilk görünüş sırasına göre dizilir; elemanlar kaynak dizideki sıralarını korur.

Uygulama Kişileri şehre göre grupla

Aşağıdaki people listesini GroupBy ile City'ye göre grupla. foreach ile her grubun anahtarını ve eleman adedini Console.WriteLine ile yazdır.

Örnek çözümü göster
" + g.Count() yazdır.
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.Linq;

class Person
{
    public string Name { get; set; }
    public string City { get; set; }
}

class Program
{
    static void Main()
    {
        var people = new List<Person>
        {
            new Person { Name = "Ayşe", City = "İstanbul" },
            new Person { Name = "Ali", City = "İstanbul" },
            new Person { Name = "Mehmet", City = "Ankara" }
        };
        var groups = people.GroupBy(p => p.City);
        foreach (var g in groups)
        {
            Console.WriteLine(g.Key + ": " + g.Count());
        }
    }
}

Kendini test et

  1. GroupBy ne döndürür?

    • Anahtara göre gruplar
    • Tek bir değer
    • Sıralı bir dizi
    • Filtrelenmiş dizi
    Cevabı göster

    Anahtara göre gruplar — Doğru. GroupBy her anahtar için bir IGrouping verir.

  2. GroupBy çağrısını tamamla

    var groups = people.Group____(p => p.City);
    Cevabı göster
    var groups = people.GroupBy(p => p.City);
  3. Üyeyi açıklamaya eşle

    Key
    Grubun anahtarı
    Count()
    Grubun eleman adedi
    GroupBy
    Anahtara göre ayır
    IGrouping<K,T>
    Grup sözleşmesi

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