group by
sorgu söz diziminde group by ve into kullanmayı öğrenirsin.
group by ile gruplama
group ... by, elemanları bir anahtara göre kümelere ayırır. Sonuç, her biri bir IGrouping<TKey, TElement> olan bir dizidir. Her küme aynı anahtarı paylaşan öğeleri içerir. Örnek: from n in numbers group n by n % 2.
Bu, sayıları çift/tek olarak iki kümeye ayırır. Her kümenin Key özelliği anahtarı (0 veya 1), kendisi de o anahtara sahip öğelerin dizisidir. Kümeler üzerinde foreach ile gezebilirsin.
into ile devam
into, gruplama sonrası sorguya devam etmeyi sağlar. group n by n % 2 into g yazdıktan sonra g bir aralık değişkeni olur ve sonraki yan tümcelerde kullanılabilir.
Devam eden kısımda her küme üzerinde işlem yapabilirsin: select new { Key = g.Key, Count = g.Count() }. Bu, her kümenin anahtarını ve öğe sayısını içeren anonim tipli bir dizi üretir. into, gruplama sonrası ek projeksiyon için kullanışlıdır.
Uygulama Çift/tek kümeleri say
numbers dizisinde group n by n % 2 into g ile sayıları çift/tek olarak kümele. Her küme için select new { Key = g.Key, Count = g.Count() } ile anonim tip üret. foreach ile her kümenin Key ve Count değerlerini Console.WriteLine($"{g.Key}: {g.Count}") ile yazdır.
Örnek çözümü göster
{g.Count}"); } ile yazdır.
Örnek çözüm:
using System;
using System.Linq;
class Program
{
static void Main()
{
int[] numbers = { 1, 2, 3, 4, 5, 6 };
var query = from n in numbers
group n by n % 2 into g
select new { Key = g.Key, Count = g.Count() };
foreach (var g in query)
{
Console.WriteLine($"{g.Key}: {g.Count}");
}
}
}
Kendini test et
-
group by yan tümcesini tamamla
var query = from n in numbers ____ n by n % 2;Cevabı göster
var query = from n in numbers group n by n % 2; -
group by sonucu ne türdür?
- Bir sayı
- Bir dizi
- IGrouping<TKey, TElement> kümesi
- Bir dize
Cevabı göster
IGrouping<TKey, TElement> kümesi — Doğru. group by, IGrouping<TKey, TElement> kümesi döndürür.
-
Anahtar kelimeyi rolüne eşle
- group
- Kümeleme yapar
- by
- Anahtarı belirtir
- into
- Devam yaratır
- select
- Projeksiyon yapar