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);
- Sorgu sözdizimi (Query Syntax), SQL'e benzer:
- 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
foreachile 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.