Sobes.tech
Junior

LINQ ile tanışıyor musun?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, biliyorum.

LINQ (Language Integrated Query), sorgu işlevselliğini C# diline entegre eden bir teknolojiler kümesidir. Farklı veri kaynaklarına (koleksiyonlar, veritabanları, XML vb.) doğrudan C# kodu içinde sorgular yazmaya olanak tanır ve tek bir sözdizimi ve model kullanır.

LINQ'in temel bileşenleri ve özellikleri:

  • LINQ sağlayıcıları: LINQ sorgularını belirli bir veri kaynağı için özel komutlara dönüştüren arayüzleri ve sınıfları uygularlar. Örnekler: LINQ to Objects, LINQ to SQL, LINQ to XML.
  • LINQ operatörleri: IEnumerable<T> ve IQueryable<T> için genişletmeler olup, filtreleme, projeksiyon, sıralama, gruplama ve toplama gibi standart sorgu işlemleri sağlarlar. İki biçimde mevcutturlar:
    • Sorgu sözdizimi (Query Syntax), SQL'e benzer:
      // Sorgu sözdizimi örneği
      var query = from item in collection
                  where item.Property > 10
                  orderby item.AnotherProperty
                  select item.Result;
      
    • Yöntem sözdizimi (Method Syntax), genişletme metodları kullanır:
      // Yöntem sözdizimi örneği
      var query = collection.Where(item => item.Property > 10)
                            .OrderBy(item => item.AnotherProperty)
                            .Select(item => item.Result);
      
  • Gecikmeli yürütme (Deferred Execution): LINQ sorguları, tanımlandıktan hemen sonra çalıştırılmaz. Gerçekten ihtiyaç duyulduğu zaman, örneğin foreach ile dolaşırken, ToList(), ToArray(), Count() çağrıldığında yürütülür. Bu, veriyle çalışma şeklini optimize eder.
  • Güçlü tip güvenliği: LINQ, C#'ın statik tip güvenliği avantajlarından yararlanır ve derleme zamanında denetimler ile IntelliSense sağlar.
  • Birleştirme yeteneği: Sorgu operatörleri kolayca birleştirilebilir ve karmaşık sorgular oluşturulabilir.
  • Genişletilebilirlik: Kendi LINQ sağlayıcılarınızı ve operatörlerinizi oluşturabilirsiniz.

En sık kullanılan LINQ operatörleri:

Kategori Yöntem sözdiziminde operatörler Açıklama
Filtreleme Where, OfType Koşula veya türe göre öğeleri seçer.
Projeksiyon Select, SelectMany Öğeleri dönüştürür veya genişletir.
Sıralama OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse Öğeleri sıralar.
Gruplama GroupBy Öğeleri anahtara göre gruplar.
Birleşim Join, GroupJoin Farklı kaynaklardan öğeleri birleştirir.
Toplama Count, LongCount, Sum, Average, Min, Max, Aggregate Toplam değerleri hesaplar.
Kuantörler All, Any, Contains, SequenceEqual Öğelerin varlığını veya uyumunu kontrol eder.
Öğeler First, FirstOrDefault, Single, SingleOrDefault, ElementAt, ElementAtOrDefault, DefaultIfEmpty Bireysel öğeleri alır.
Dilimleme Take, Skip, TakeWhile, SkipWhile Öğeleri seçer veya atlar.
Dönüştürme ToArray, ToList, ToDictionary, ToLookup, Cast, AsEnumerable, AsQueryable Koleksiyonları diğer türe dönüştürür.
Üretim Range, Repeat Diziler oluşturur.
Kümeler Distinct, Union, Intersect, Except Kümeler üzerinde işlemler.
Zip Zip İki diziyi birleştirir.

LINQ, C#'ta veri ile çalışma kodunu büyük ölçüde basitleştirir ve okunabilir hale getirir.