LINQ Cheat Sheet
LINQ kod içerisinde SQL tarzı sorgular yapabilmemize olanak sağlayan bir teknolojidir.

Urun nesnelerinin ve tamsayı değerlerinin yer aldığı iki farklı dizi üzerinde sorgulama işlemleri gerçekleştirilecektir.
public class Urun
{
public int Numara { get; set; }
public string Ad { get; set; }
public string Kategori { get; set; }
public double Deger { get; set; }
}
var dizi = new[] { 2, 3, 7, 4, 5, 4, 9, 1, 3 };
var urunler = new[]
{
new Urun { Numara = 1, Ad = "Kalem", Kategori = "Kırtasiye", Deger = 3 },
new Urun { Numara = 2, Ad = "Elma", Kategori = "Manav", Deger = 4.2 }
};
Süzme (Filter)
// Değeri 3 olan dizi elemanları alınıyor
var sonuc = (from c in dizi
where c == 3
select c);
// 2 farklı kritere göre süzme
var sonuc = (from c in urunler
where c.Kategori == "Manav" && c.Deger > 1
select c);
// Lambda Syntax
var sonuc = urunler.Where(c => c.Ad == "Elma");
Yansıtma (Projection)
// Ürünlerin sadece belirli özellikleri listeleniyor.
// Anonim tip geri döndürülüyor.
var sonuc = (from c in urunler
select new
{
c.Numara,
c.Ad
});
// Lambda Syntax
var sonuc = urunler.Select(c => new
{
c.Numara,
c.Ad
});
Sıralama (Order)
// Dizi tersten sıralanıyor.
var sonuc = (from c in dizi
orderby c descending
select c);
// Birden fazla alana göre sıralanıyor.
// İlk olarak değere, daha sonra kategoriye göre sıralanır. (sondan başa doğru)
var sonuc = (from c in urunler
orderby c.Kategori, c.Deger descending
select c);
// Lambda Syntax
var sonuc = urunler.OrderByDescending(c => c.Deger).ThenBy(c => c.Kategori);
Birleştirme (Join)
// İki liste birleştirilerek, listelerin sadece belirli özellikleri alınıyor.
var sonuc = (from c in dizi
join urun in urunler on c equals urun.Numara
select new
{
c,
urun.Ad
});
// Left join
var sonuc = (from c in dizi
join u1 in urunler on c equals u1.Numara into u2
from urun in u2.DefaultIfEmpty()
select new
{
c,
urun.Ad
});
Gruplama (Group)
// Ürünler kategorilerine göre gruplanıyor.
// Her bir kategori grubunda kaç adet ürün bulunduğu ve kategorinin toplam değeri listeleniyor.
var sonuc = (from c in urunler
group c by c.Kategori into g
select new
{
Kategori = g.Key,
Adet = g.Count(),
ToplamDeger = g.Sum(k => k.Deger)
});
// Birden fazla alana göre gruplama
var sonuc = (from c in urunler
group c by new { c.Ad, c.Kategori } into g
select new
{
g.Key.Kategori,
Adet = g.Count(),
ToplamDeger = g.Sum(k => k.Deger)
});



