Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
17 yazı bulundu #dotnet
LINQ Nedir? C# ile Query Syntax ve Method Syntax
Backend SERİ 01

LINQ Nedir? C# ile Query Syntax ve Method Syntax

LINQ'in döngülerle yazdığımız sorgulara getirdiği değişiklik, onu mümkün kılan C# 3.0 özellikleri, query syntax'ın derleyicide method çağrısına nasıl çevrildiği, hangi yazımı ne zaman seçmek gerektiği ve ilk tuzaklar.

7 Kas 2026 11 dk 7
LINQ Deferred Execution: Sorgu Ne Zaman Çalışır? IEnumerable ve IQueryable
Backend SERİ 02

LINQ Deferred Execution: Sorgu Ne Zaman Çalışır? IEnumerable ve IQueryable

LINQ sorgusunun tanımlandığında değil dolaşıldığında çalışması, element element streaming, hemen çalışan ve non-streaming operatörler, çoklu enumeration'ın bedeli ve Func ile expression tree üzerinden IEnumerable ile IQueryable farkı.

7 Kas 2026 10 dk 8
LINQ ile Filtreleme ve Sıralama: Where, OrderBy, ThenBy ve Reverse
Backend SERİ 03

LINQ ile Filtreleme ve Sıralama: Where, OrderBy, ThenBy ve Reverse

Where ve index overload'u, ikinci OrderBy'ın ilkini neden sildiği, ThenBy ile çok key'li sıralama, OrderBy'ın stable, List.Sort'un unstable oluşu, kültüre bağlı string sıralaması ve Reverse ile OrderByDescending farkı.

7 Kas 2026 10 dk 6
LINQ ile Projection: Select, SelectMany ve Anonymous Type
Backend SERİ 04

LINQ ile Projection: Select, SelectMany ve Anonymous Type

Select ile bire bir, SelectMany ile bire çok projection; DTO'ya dönüştürmek, result selector ile üst bilgiyi korumak, kartezyen çarpım, anonymous type'ın eşitlik ve with kuralları, method dışına tuple mı record mı.

7 Kas 2026 10 dk 11
LINQ Element Operatörleri: First, Last, Single, ElementAt ve OrDefault
Backend SERİ 05

LINQ Element Operatörleri: First, Last, Single, ElementAt ve OrDefault

First, Last, Single ve ElementAt ailesi ile OrDefault kardeşleri; value type'larda 0'ın 'bulunamadı' ile karışması, .NET 6'nın varsayılan değer parametresi ve Index overload'ları, First ile Single arasındaki niyet farkı ve nullable uyarıları.

7 Kas 2026 9 dk 9
LINQ Partitioning: Take, Skip, TakeWhile, Chunk ve Take(Range)
Backend SERİ 06

LINQ Partitioning: Take, Skip, TakeWhile, Chunk ve Take(Range)

TakeWhile neden bir filtre değildir, Skip ve Take ile doğru sayfalama ve sıralamanın sessiz kuralı, TakeLast/SkipLast'ın sona kadar okuması, .NET 6 ile gelen Take(Range) ve array slice farkı, Chunk ile paketlere bölmek ve partitioning operatörlerinin kaynaktan tam olarak ne kadar okuduğu.

7 Kas 2026 10 dk 9
LINQ Aggregation Operatörleri: Count, Sum, Average, Min, Max, Aggregate ve MinBy/MaxBy
Backend SERİ 07

LINQ Aggregation Operatörleri: Count, Sum, Average, Min, Max, Aggregate ve MinBy/MaxBy

Boş sequence'te Sum neden 0, Max neden exception döner ve nullable selector ile DefaultIfEmpty çözümleri. Count ile .NET 6 TryGetNonEnumeratedCount, Average'ın dönüş tipi, Sum'ın checked overflow'u, değer yerine element döndüren MinBy/MaxBy, Aggregate'in üç overload'u ve aynı sorguyu kaç kez enumerate ettiğin.

7 Kas 2026 11 dk 9
LINQ Gruplama: GroupBy, IGrouping ve ToLookup
Backend SERİ 08

LINQ Gruplama: GroupBy, IGrouping ve ToLookup

GroupBy'ın deferred, ToLookup'ın immediate çalışması ve bunun sonuca etkisi. IGrouping'in key ve element'leri, dokümante edilmiş grup sırası, gruplayıp özetlemek, element ve result selector overload'ları, query syntax'ta group by into, composite key'ler, ToLookup'ın olmayan key davranışı, comparer ile gruplama ve GroupBy'ın kaynağı buffer'laması.

7 Kas 2026 10 dk 8
LINQ Set İşlemleri: Distinct, Union, Intersect, Except ve DistinctBy
Backend SERİ 09

LINQ Set İşlemleri: Distinct, Union, Intersect, Except ve DistinctBy

Distinct'in eşitliği nereden aldığı ve eşitliği olmayan class'ta neden hiçbir şey silmediği. Union, Intersect ve Except'in sonucu tekilleştirmesi, Concat ve Where ile farkları, dokümante edilen sıra, comparer ile karşılaştırma, .NET 6 DistinctBy/UnionBy ve key listesi alan IntersectBy/ExceptBy, CS0411 hatası, HashSet ve deferred execution.

7 Kas 2026 9 dk 8
LINQ Join ve GroupJoin: Inner Join, Composite Key ve Left Join Pattern'ı
Backend SERİ 10

LINQ Join ve GroupJoin: Inner Join, Composite Key ve Left Join Pattern'ı

Join'in inner join olarak eşleşmeyeni düşürüp çoklu eşleşmeyi çoğaltması ve dokümante edilen sırası. Query syntax'ta equals'ın yönü ve CS1937/CS1938, composite key ve CS1941, GroupJoin ile hiyerarşik sonuç, GroupJoin + DefaultIfEmpty ile left join pattern'ı ve null tuzağı, çoklu join ve Join'in lookup ile n + m'de çalışması.

7 Kas 2026 11 dk 8
LINQ Any, All, Contains, SequenceEqual ve Dönüşüm Operatörleri
Backend SERİ 11

LINQ Any, All, Contains, SequenceEqual ve Dönüşüm Operatörleri

All'ın boş sequence'te neden true döndüğü ve doğrulamada Any ile birlikte kullanmak, Any'nin ilk element'te durması ve Count() > 0 farkı, Contains ve record eşitliği, SequenceEqual ve collection taşıyan record tuzağı, ToList/ToArray/ToHashSet ile snapshot, ToDictionary'de tekrar eden key ve Cast ile OfType farkı.

7 Kas 2026 10 dk 8
LINQ'te Kendi Operatörünü Yazmak: Extension Method ve yield return
Backend SERİ 12

LINQ'te Kendi Operatörünü Yazmak: Extension Method ve yield return

LINQ operatörünün aslında bir extension method olduğu; yield return ile lazy ve streaming operatör yazmak, argüman doğrulamasını iterator'den ayırmak, immediate operatörler, erken bırakılan enumeration'da finally, IQueryable için Expression alan operatör ve BCL ile isim çakışması.

7 Kas 2026 13 dk 7
Blog Haritası