Restriction Operatörü denilen şey aslında ismi kadar karmaşık değil 🙂 Buna restriction operatörü demelerinde sebep, gelen dataları duruma göre engellemek ve bu vesile ile filtrelemek anlamına gelmektedir. Yani istenmeyen dataları engellemek anlamındadır. Bu da aslında SQL sorgularında da kullandığımız “WHERE” ile yapılmaktadır. Ama Linq ‘teki yazım şekli, özellikle birden fazla filtre belirtiyorsak, IF cümlesi yazmaya benzemektedir.
Şöyle ki :
var sorgu = from ogr in list where ogr.Ad.Contains("e") select ogr;
Bu linq sorgusu ile elimizdeki list içerisindeki her bir nesneyi ogr olarak ele alıp, daha sonra “Ad” property’si içinde “e” içerenleri filtreleyip daha sonra ogr nesnesinin tamamını select etmiş oluyoruz.
WHERE kısmında birden fazla koşul belirtebiliriz. Bunu da tıpkı C# ‘ta IF yazar gibi çift ampersand işareti ile “&&” yapmaktayız.
Mesela, aynı linq sorgusu, Ad içerisinde “e” geçenler VE “m” geçenleri bulmak istersek ;
var sorgu = from ogr in list where ogr.Ad.Contains("e") && ogr.Ad.Contains("m") select ogr;
Bu gelen sonuçları Id property’sine göre, sıralamak istersek WHERE cümlesinden sonra “orderby” kullanmamız gerekecek.
var sorgu = from ogr in list where ogr.Ad.Contains("e") && ogr.Ad.Contains("m") orderby ogr.Id descending select ogr;
Property ismini belirttikten sonra, “ascending” yada “descending” yazabilirsiniz. Eğer descending yazmazsak, default olarak ascending (yani artan şekilde) sıralayacaktır.