GroupBy
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
-
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.
-
GroupBy çağrısını tamamla
var groups = people.Group____(p => p.City);Cevabı göster
var groups = people.GroupBy(p => p.City); -
Ü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