SEO (Arama Motoru Optimizasyonu) Mikro İnteraktif ÜCRETSİZ - Google Play'den İndirin

LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

LINQ, kodunuzu daha temiz ve daha verimli hale getirebilecek değerli taşlarla doludur. Kendi içerisinde hayatı kolaylaştıran ve pek az bilinen SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect metodlarını inceleyelim.

SequenceEqual Metodu

SequenceEqual metodu list tipinde tanımlanan iki diziyi hem değerleri hem de sırası ile tamamen eşitliğini kıyaslar. Örneğin iki list dizi içerisindeki değerler aynı fakat sıralaması farklı ise eşitlik sağlanmamış olarak kabul ediliyor. Tam eşitlik için değerler ve değerlerin sırası da aynı olmalı. Metod bize true yada false olarak sonuç dönmektedir.
SequenceEqual Örnek 1
int[] arrDizi1 = new[] { 1, 2, 5, 7 };
int[] arrDizi2 = new[] { 1, 2, 5, 7 };
bool blnEslesti = arrDizi1.SequenceEqual(arrDizi2);
Console.WriteLine($"İki dizinin eşitlik sonucu: {blnEslesti}");

SequenceEqual Örnek 1
LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

Benzer şekilde degerleri aynı olan fakat sıralaması farklı olan iki dizi karşılaştırmasını inceleyelim.
SequenceEqual Örnek 2
int[] arrDizi1 = new[] { 1, 2, 5, 7 };
int[] arrDizi2 = new[] { 5, 1, 7, 2 };
bool blnEslesti = arrDizi1.SequenceEqual(arrDizi2);
Console.WriteLine($"İki dizinin eşitlik sonucu: {blnEslesti}");

SequenceEqual Örnek 2
LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

Görüldüğü gibi iki dizi aynı değerlere sahip fakat değerlerin sırası farklı olduğu için tam eşleşme sağlanamadı. Dolayısıyla sonuç false olarak yansıdı.

Aggregate Metodu

Aggregate yöntemi, bir listedeki her öğe üzerinde, önceki işlemleri de dikkate alarak bir işlem gerçekleştirir. Örneğin, bir listenin ilk iki öğesi üzerinde bir işlem gerçekleştirir ve sonucu üçüncü öğe üzerinde işlem yapmak için kullanır, ardından tek bir değer döndürmek için sürekli olarak devam eder.
Aggregate Örnek 1
string[] arrKelimeler = new[] { "Merhaba", "Dünya", "Yazılıma", "Hoşgeldiniz"};
string strCumle = arrKelimeler.Aggregate((a,b) => a + " " + b);
Console.WriteLine($"{strCumle}");

Aggregate Örnek 1
LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

Diğer bir örnekte ise sayısal değerli dizinin elemanlarını toplama işlemi yapalım.
Aggregate Örnek 2
int[] arrSayilar = new[] { 67, 8, 16, 100 };
int intToplam = arrSayilar.Aggregate((a, b) => a + b);
Console.WriteLine($"Dizideki sayıların toplam: {intToplam}");

Aggregate Örnek 2
LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

ToLookup Metodu

ToLookup bir dizinin öğelerini belirli bir anahtara göre gruplamak ve daha sonra bu gruplara hızlı erişim sağlamak istediğiniz durumlarda Lookup'ı kullanışlı hale getirir.
ToLookup Örnek 1
int[] sayilar = new[] { 1, 2, 3, 4, 5, 6, 7, 8 };
ILookup<bool, int> ciftSayilarDizisi = sayilar.ToLookup(x => (x % 2) == 0);
IEnumerable<int> ciftSayilar = ciftSayilarDizisi[true];
IEnumerable<int> tekSayilar = ciftSayilarDizisi[false];
Console.WriteLine("Çift Sayılar: " + string.Join(",", ciftSayilar));
Console.WriteLine("Tek Sayılar:  " + string.Join(",", tekSayilar));

ToLookup Örnek 1
LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

Diğer bir örnekte ise koşul kullanımı yapalım.
ToLookup Örnek 2
class Araba
{
    public string marka { get; set; }
    public string model { get; set; }
    public int fiyat { get; set; }
}

Araba[] arabalar = new[] {
   new Araba { marka = "Audi", model = "A5", fiyat = 2000 },
   new Araba { marka = "Audi", model = "A4", fiyat = 1900 },
   new Araba { marka = "Audi", model = "Q3", fiyat = 700 },
   new Araba { marka = "Audi", model = "Q7", fiyat = 1100 },
   new Araba { marka = "Mercedes", model = "EQB", fiyat = 4000 },
   new Araba { marka = "Mercedes", model = "GLB", fiyat = 3800 },
   new Araba { marka = "Mercedes", model = "GLA", fiyat = 5000 },
   new Araba { marka = "Tesla", model="Model 3", fiyat = 1700 },
   new Araba { marka = "Tesla", model="Model Y", fiyat = 1950 },
   new Araba { marka = "Tesla", model="Model X", fiyat = 2380 }
};

var degerler = arabalar.ToLookup(a => a.marka, b => b.fiyat);

int intAudiToplam = degerler["Audi"].Sum();
int intMercedesToplam = degerler["Mercedes"].Sum();
Console.WriteLine($"Audi araçların toplam değeri: {intAudiToplam}");
Console.WriteLine($"Mercedes araçların toplam değeri: {intMercedesToplam}");

ToLookup Örnek 2
LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

GroupJoin Metodu

GroupJoin operatörü, iki diziyi anahtara göre birleştirir ve sonucu eşleşen anahtara göre gruplandırır ve ardından gruplanmış sonuç ve anahtar koleksiyonunu döndürür.
GroupJoin Örnek 1
var arrBolumler = new[] {
    new { Id = 1, Ad = "Genel Cerrahi" },
    new { Id = 2, Ad = "Göz Hastalıkları" },
    new { Id = 3, Ad = "Ortopedi ve Travmatoloji" },
    new { Id = 4, Ad = "Kulak Burun Boğaz" }
};

var arrDoktorlar = new[] {
    new { Id = 1, BolumId = 1, AdSoyad = "Mehmet Can" },
    new { Id = 2, BolumId = 4, AdSoyad = "Şerif Doğan" },
    new { Id = 3, BolumId = 1, AdSoyad = "Tamer Şahin" },
    new { Id = 4, BolumId = 3, AdSoyad = "Selim Şahin" },
    new { Id = 5, BolumId = 2, AdSoyad = "Naim Demir" },
    new { Id = 6, BolumId = 4, AdSoyad = "Oğuz Mert" },
    new { Id = 7, BolumId = 1, AdSoyad = "Metin Cenk" }
};

var gruplandirma = arrBolumler.GroupJoin(arrDoktorlar,
    bolumler => bolumler.Id,
    doktorlar => doktorlar.BolumId,
    (bolumler, doktorlar) => new { bolumler, doktorlar });

foreach (var grup in gruplandirma)
{
    Console.WriteLine($" Bölüm Adı: {grup.bolumler.Ad}");
    foreach (var doktor in grup.doktorlar)
    {
        Console.WriteLine($"   DoktorId: {doktor.Id}, BolumId: {doktor.BolumId},  AdSoyad: {doktor.AdSoyad}");
    }
    Console.WriteLine("");
}
Console.ReadLine();

GroupJoin Örnek 1
LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

Intersect Metodu

Intersect yöntemi, iki dizi (koleksiyon) arasındaki ortak öğeleri bulur. Bu yöntem, .NET'te listeler, diziler vb. gibi farklı koleksiyon türleri için kullanılabilir. İki veri kümesini karşılaştırmanız ve her iki kümede de bulunan öğeleri bulmanız gerektiğinde kullanışlıdır.
İki sayı dizisinde ortak "kesişim" değerleri bulalım.
Intersect Örnek 1
List<int> arrDizi1 = new List() { 23, 27, 38, 41, 57, 65 };
List<int> arrDizi2 = new List() { 11, 38, 57, 65, 91, 100, 112, 208 };
List<int> arrKesisim = arrDizi1.Intersect(arrDizi2).ToList();
foreach (var item in arrKesisim)
{
    Console.WriteLine($" İki dizide ortak olan değer: {item}");
}
Console.ReadLine();

Intersect Örnek 1
LINQ'da SequenceEqual, Aggregate, GroupJoin, ToLookup ve Intersect Metodlarını İnceleyelim

Yorumlar

Yorum Yaz

Avatar

REKLAM

DDos Koruma, Botnet Koruma, Layer 7 Saldırı koruması, Sanal sunucu, Vds sunucu

REKLAM

En Yeni Çizgi Filmler, Masallar ve Etkinlikler

REKLAM

SEO-Arama Motoru Optimizasyonu Uygulaması

REKLAM

Hayvan Sesleri Uygulaması

REKLAM

Çocuk Etkinlikleri Uygulaması

EN

  • Popüler
  • Yeni
  • Son Yorum