Bu makalemizde SQL’deki DISTINCT komutunun LINQ’teki kullanımını inceleyeceğiz.
Öncelikle DISTINCT işleminin katı SQL kodunu inceleyelim:
Elimizde OnlineSatis isminde bir veritabanı olsun. Bu veritabanı içinde urunler isminde bir tablomuz olsun.
linq-to-sql-distinct-1

linq-to-sql-distinct-1

Bu tablodan, elimizde bulunan ürünlerin isimlerini görmek istiyoruz.
Bu işlemi gerçekleştirecek SQL kodu aşağıdaki gibidir:
SELECT DISTINCT adi FROM urunler
adi sütununda aynı değerden birden çok var. Örneğin 2 adet anakart, 2 adet mouse… bulunmaktadır. Yalnız biz ürün adlarını birer tane olacak şekilde görmek istiyoruz. DISTINCT komutu, bize tekrarlayan kayıtları bir tane gibi gösterir.
Şimdi bu işlemi LINQ to SQL ile gerçekleştirelim:
Veritabanımızda bulunan urunler tablomuzu bir LINQ to SQL Classes içerisine aktarıyoruz. Bu işlemi buradaninceleyebilirsiniz.
Bu işlemi gerçekleştirdikten sonra kodumuzu yazabiliriz:
private void UrunleriGoster()
{
     DataClasses1DataContext dc = new DataClasses1DataContext();
     var urunlerim = (from urun in dc.urunlers
                         select urun.adi).Distinct();
     foreach (var urunum in urunlerim)
          listBox1.Items.Add(urunum);
}
(from urun in dc.urunlers select urun.adi).Distinct()
Distinct() komutunun dışarıda yazılmasının nedeni, urunler tablosundaki adi sütununda bulunan elemanları getirdikten sonra bu elemanlar içinde tekrarlananlar varsa bir tane olarak yazılaması gerektiğidir. Yani önce içteki sorgu çalışır, sonra sorgu sonucunda gelen veriler teke indirilir gibi de düşünülebilir.
Kod çalıştıktan sonra ekran çıktısı aşağıdaki gibi olacaktır:
linq-to-sql-distinct-2

linq-to-sql-distinct-2