Ana Sayfa Microsoft .NETC# C# Lambda İfadeleri ve Kullanımları

C# Lambda İfadeleri ve Kullanımları

by Sinan BOZKUŞ
10.942 kez okundu

lambda

 

Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki Lambda Calculus’un C# ve Visual Basic’e uyarlanmasıdır.

Lambda İfadeleri kullanarak parametre geçilebilen ve değer döndüren isimsiz yerel fonksiyonlar oluşturabilirsiniz. Bu ifadeler genelde basit işlemleri bildirmekte kullanılabilir.

Kendim için aldığım lambda ifadeleri ve kullanımları notlarını blog takipçilerimle de paylaşıyorum.

TOLIST
Entity içerisindeki objeleri list tipinde geri döndürür.

Örnek Kullanım:

[csharp]db.Categories.ToList();[/csharp]

[divider type=”dashed”]

WHERE
Liste üzerinde koşul belirtmeyi sağlıyor. O koşula göre değerler dönüyor.
Liste dönecekse .ToList() tek bir eleman döneceğinden eminsek SingleOrDefault() kullanıyoruz.

Örnek Kullanım:

[csharp]db.Categories.Where(x => x.CategoryID == ID).SingleOrDefault();[/csharp]

[divider type=”dashed”]

SELECT
Sadece istemiş olduğumuz kolon veya kolonların gelmesini sağlıyor.
Eğer birden fazla kolon getireceksek mutlaka farklı bir class a atama yapmamız gerekiyor. Yani DTO kullanmamız gerekiyor.

Örnek Kullanım:

[csharp]db.Categories.Where(x => x.CategoryID == ID).Select(x => x.CategoryName).SingleOrDefault();[/csharp]

Örnek Kullanım 2:

[csharp]db.Categories.Where(x => x.CategoryID == ID).Select(x => new CategoryDTO { CategoryID = x.CategoryID, CategoryName = x.CategoryName }).SingleOrDefault();[/csharp]

[divider type=”dashed”]

SKIP
Liste üstünde istediğimiz satır sayısı kadar atlamaya yarıyor.
Yani Skip(5) dediğimde 0 dan başlayarak 0-1-2-3-4 elemanlarını atlıyor ve 5.elemandan başlıyor.
Kendisinden önce girdiğimiz sayı kadar atlamış oluyor.

Örnek Kullanım:

[csharp]db.Categories.OrderBy(x => x.CategoryID).Skip(5).ToList();[/csharp]

[divider type=”dashed”]

TAKE
Liste üzerinden baştan istediğimiz kadar elemanı almamızı sağlıyor. SQL deki SELECT TOP gibi düşünebiliriz.

Örnek Kullanım:

[csharp]db.Categories.OrderBy(x => x.CategoryID).Take(5).ToList();[/csharp]

[divider type=”dashed”]

COUNT
Listedeki eleman sayısını gösterir.

Örnek Kullanım:

[csharp]db.Categories.Count();[/csharp]

[divider type=”dashed”]

FIRST
Dönen koşulda listede bir çok eleman olmasına rağmen ilk elemanı getirir.

Örnek Kullanım:

[csharp]db.Products.Where(x => x.CategoryID == ID).OrderBy(x => x.ProductID).FirstOrDefault();[/csharp]

[divider type=”dashed”]

ORDER BY
Sıralama işlemleri için kullanılıyor. OrderBy ve OrderByDescending şeklinde iki sıralama methodu mevcut.

Örnek Kullanım:

[csharp]db.Employees.OrderBy(x => x.BirthDate).ToList();[/csharp]

[divider type=”dashed”]

GROUP BY
Gruplama işlemleri için kullanılıyor. Group By içerisine önce gruplama yapmak istediğimiz kolon yazılıyor. Daha sonra select içinde newleyerek objemizi oluşturuyoruz. Hangi kolona/property e göre grupladıysak key olarak onu giriyoruz.

Örnek Kullanım:

[csharp]db.Orders.GroupBy(x => x.OrderDate).Select(lg => new OrderDTO { Tarih = lg.Key.Value, Sayi = lg.Count() }).ToList();[/csharp]

[divider type=”dashed”]

JOIN
İki tabloyu birbirine bağlama işlemi için kullanılıyor, sql deki inner join gibi…

Örnek Kullanım:

[csharp]db.Products.Join(db.Suppliers, x => x.SupplierID, y => y.SupplierID, (x, y) => new CategoryDTO { CategoryName = y.CompanyName }).FirstOrDefault();[/csharp]

[divider type=”dashed”]

GROUPJOIN
Aynı anda hem join hem de gruplama işlemi yapılması gerektiği durumlarda kullanılır.

Örnek Kullanım:

[csharp]db.Suppliers.GroupJoin(db.Products, s => s.SupplierID, p => p.SupplierID, (s, p) => new SupplierDTO { SupplierID = s.SupplierID, SupplierName = s.CompanyName, ProductCount = p.Count() }).ToList();[/csharp]

[divider type=”dashed”]

ANY
Where ile benzer şekilde kullanılır. Geriye bool tipinde değer döndürür, şartı sağlayan bir kayıt varsa geriye true yoksa false döndürür.

Örnek Kullanım:

[csharp]db.Categories.Any(x => x.CategoryName == CatName)[/csharp]

 

 

 

Bunlara da bakmak isteyebilirsiniz

Bir Yorum Bırakın