Linq Where Kullanımı

Posted by

Merhaba arkadaşlar, bu yazımda sizlere Linq Where Kullanımı konusundan bahsedeceğim.

Linq Where komutu ile veriler üzerinde filtreleme işlemleri sağlayarak listemizi şekillendirebiliriz. Gerekli olan işlemlerimizi ona göre sağlayabiliriz. Örneğin; Veri tabanı üzerinden ürünlerimizi sorgulayacağız. Bu ürün tablomuzda da IsDeleted alanımız olsun diyelim. Veri tabanı üzerinde ürünlerimizi silme durumunu IsDeleted alanına göre kontrol ediyoruz. Sorgulamamızı yaparken IsDeleted alanı false olan değerleri Where komutumuz ile sorgulayabiliriz.

Örnek kod üzerinden incelemelerimizi yapalım;

public class Product
{
   public int Id { get; set; }
   public string Name { get; set; }
   public bool IsDeleted { get; set; }
}

Öncelikle bir Product nesnesi oluşturuyoruz.

Sonrasında ise örnek bir liste oluşturuyoruz.

List<Product> products = new List<Product>() 
{ 
     new Product { Id = 1, Name = "Bilgisayar 1", IsDeleted = false },
     new Product { Id = 2, Name = "Bilgisayar 2", IsDeleted = true },
};

Listemizi de oluşturduktan sonra Where komutumuzu kullanarak bir filtreleme işlemi sağlıyoruz.

List<Product> results = products.Where(x=> x.IsDeleted == false).ToList();

products listesi üzerinde Where komutumuzu kullanıyoruz ve onun içerisinde de IsDeleted alanı false olan kayıtları listeleyeceğimizi belirtiyoruz. Bu işlemden sonra da döngü ile ürün listemizi ekrana yazdırma işlemini gerçekleştiriyoruz.

foreach (var product in results)
{
   Console.WriteLine($"{product.Id} - {product.Name}");
}

Birden fazla alan ile filtreleme işlemi sağlamak istersek eğer “&&” ile diğer alanı ya da alanları belirterek filtreleme işlemlerini sağlayabiliriz.

Örnek:

List<Product> results = products.Where(x=> x.IsDeleted == false && x.IsActive == true).ToList();

Yukarıda ise Product nesnemizde ek olarak IsActive alanı olduğunu da farz edersek hem IsDeleted hem de IsActive alanı ile filtreleme işlemlerini sağlayabiliriz.

Umarım faydalı olur.

Bir sonraki yazıda görüşmek üzere…

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir