CodeBlanks Logo Icon CodeBlanks

Özet - İleri LINQ

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

GroupBy, Join ve Aggregate'i birleştirerek bir satış analiz raporu yazarsın.

Özet - İleri LINQ

Bu grupta beş ileri LINQ işlecini öğrendin. GroupBy elemanları anahtara göre gruplar, Join iki diziyi iç birleşimle eşler, GroupJoin hiyerarşik birleşim yapar.

Aggregate bir diziyi tek değere katlar, Zip iki diziyi paralel birleştirir. Şimdi iki küçük görevle bunları birlikte kullanacaksın.

Uygulama Harfe göre grupla

Aşağıdaki words listesini GroupBy ile ilk harfe göre grupla. Her harfin kaç kelimeye karşılık geldiğini 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 Program
{
    static void Main()
    {
        var words = new List<string> { "elma", "erik", "armut" };
        var groups = words.GroupBy(w => w[0]);
        foreach (var g in groups)
        {
            Console.WriteLine(g.Key + ": " + g.Count());
        }
    }
}

Uygulama İki diziyi Zip'le

Aşağıdaki names ve scores listelerini Zip ile birleştir. Her çifti isim: puan biçiminde Console.WriteLine ile yazdır.

Örnek çözümü göster
" + s); ile birleştir. foreach ile her sonucu yazdır.
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.Linq;

class Program
{
    static void Main()
    {
        var names = new List<string> { "Ayşe", "Ali" };
        var scores = new List<int> { 90, 85 };
        var pairs = names.Zip(scores, (n, s) => n + ": " + s);
        foreach (var p in pairs)
        {
            Console.WriteLine(p);
        }
    }
}

İleri LINQ'nin yeri

GroupBy, Join ve Aggregate veriyi yeniden düzenler; Zip iki kaynağı yan yana getirir. Bu işleçler bildirim temelli (declarative) veri işlemeyi mümkün kılar.

Sonraki bölüm ifade ağaçlarına (expression trees) geçiyor: LINQ'nun sorgu sağlayıcıları bu ağaçları okuyarak SQL gibi hedef dillere çevirir.

Kendini test et

  1. Hangisi elemanları gruplar?

    • Aggregate
    • GroupBy
    • Zip
    • Join
    Cevabı göster

    GroupBy — Doğru. GroupBy elemanları anahtara göre gruplara ayırır.

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

    var product = numbers.____((acc, n) => acc * n);
    Cevabı göster
    var product = numbers.Aggregate((acc, n) => acc * n);

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