{"id":4629,"date":"2020-04-21T15:56:00","date_gmt":"2020-04-21T12:56:00","guid":{"rendered":"http:\/\/www.yazilimmutfagi.com\/?p=4629"},"modified":"2020-04-22T10:55:20","modified_gmt":"2020-04-22T07:55:20","slug":"linq-lambda-kullanim-notlari-1","status":"publish","type":"post","link":"https:\/\/www.yazilimmutfagi.com\/index.php\/2020\/04\/21\/linq-lambda-kullanim-notlari-1\/","title":{"rendered":"Linq, Lambda Kullan\u0131m Notlar\u0131 &#8211; 1"},"content":{"rendered":"\n<p>Lambda expressions, yani lambda &nbsp;ifadeleri, verilen filtrelere ve belirlenen kriterlere g\u00f6re, de\u011fi\u015fkenlere de\u011fer atamaya yarayan fonksiyonlar olarak d\u00fc\u015f\u00fcn\u00fclebilir. Genellikle diziler veya entity listeleri \u00fczerinde kolayca sorgu yapmam\u0131z\u0131 sa\u011flad\u0131\u011f\u0131 i\u00e7in, sql \u00fczerinden yapabilece\u011fimiz pek \u00e7ok sorguyu bu fonksiyonlar sayesinde halledebiliriz.<\/p>\n\n\n\n<p>Bu makalede, ASP.NET  de, c# \u00fczerinden linq, lambda kullan\u0131m\u0131na ait ifadeleri \u00f6rnekler \u00fczerinden inceleyece\u011fiz.<\/p>\n\n\n\n<p><strong>Her bir ifade i\u00e7in kullanaca\u011f\u0131m\u0131z \u00f6rnek tablo ve listeler:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" loading=\"lazy\" width=\"536\" height=\"228\" src=\"http:\/\/www.yazilimmutfagi.com\/wp-content\/uploads\/2020\/04\/Untitled1-3.png\" alt=\"\" class=\"wp-image-4635\" srcset=\"https:\/\/www.yazilimmutfagi.com\/wp-content\/uploads\/2020\/04\/Untitled1-3.png 536w, https:\/\/www.yazilimmutfagi.com\/wp-content\/uploads\/2020\/04\/Untitled1-3-300x128.png 300w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><\/figure>\n\n\n\n<ul><li>int[] Sayilar1 = new int[] { 1, 2, 3, 4, 5}<\/li><li>int[] Sayilar2 = new int[] { 1, 3, 7, 7, }<\/li><li>string[] Renkler= new string[] {&#8220;Beyaz&#8221;,&#8221;Mor&#8221;}<\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong> 1 &#8211; Where Kullan\u0131m\u0131<\/strong> <\/h3>\n\n\n\n<p><strong>Where<\/strong> kullan\u0131m\u0131 , t\u0131pk\u0131 SQL de oldu\u011fu gibi liste ya da tablolarda filtreleme yapmak i\u00e7in kullan\u0131l\u0131r. Temel olarak &#8220;<strong>e\u015fit<\/strong>&#8220;, <strong>&#8220;e\u015fit de\u011fil<\/strong>&#8220;, &#8220;<strong>b\u00fcy\u00fck<\/strong>&#8220;, &#8220;<strong>k\u00fc\u00e7\u00fck<\/strong>&#8221; gibi ifadeler kullan\u0131labildi\u011fi gibi \u00f6zel ifadelerin de kullan\u0131m\u0131 vard\u0131r. \u00d6zel ifadeler i\u00e7in \u00f6rnekler verilecektir.<\/p>\n\n\n\n<p>Temel kullan\u0131m\u0131na ait basit \u00f6rnek:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable&lt;City&gt; CityList  = City.Where(x =&gt; x.CounytyId == 1);<\/code><\/pre>\n\n\n\n<p>Sonu\u00e7 : Hannover ve M\u00fcnih\u2019in bulundu\u011fu City listesini d\u00f6nd\u00fcr\u00fcr.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable SayiListesi  = Sayilar1.Where(x =&gt; x &gt;= 3);<\/code><\/pre>\n\n\n\n<p>Sonu\u00e7 : {3, 4, 5} listesini d\u00f6nd\u00fcr\u00fcr.<\/p>\n\n\n\n<p>\u00d6rnekte g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere,&nbsp; Filtreleme yap\u0131lmak istenen tablo ya da liste ismi yaz\u0131larak, yan\u0131na \u201c<strong>where<\/strong>\u201d ifadesi eklenip, parantez i\u00e7inde de istenilen filtreleme i\u015flemi yap\u0131l\u0131r. Burada dikkate edilecek ilk ifade <strong>\u201c=&gt;<\/strong>\u201d ifadesidir. Linq da lambda ifadeleri yazabilmek i\u00e7in, bu i\u015faret kombinasyonu kullan\u0131l\u0131r. \u0130kinci olarak da \u201c<strong>==<\/strong>\u201d ifadesi kullan\u0131m\u0131d\u0131r. Lamda kullan\u0131m\u0131nda \u201c<strong>=<\/strong>\u201d ifadesi atama yapmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong> 2 &#8211; OrderBy \/ OrderByDescending \/ &nbsp;ThenBy Kullan\u0131m\u0131<\/strong> <\/h3>\n\n\n\n<p>Sorgular\u0131m\u0131z\u0131 artan \u015fekilde s\u0131ralamak i\u00e7in \u201c<strong>OrderBy<\/strong>\u201d, azalan \u015fekilde s\u0131ralamak i\u00e7in ise \u201c<strong>OrderByDescending<\/strong>\u201d ifadelerini kullan\u0131r\u0131z. Ayn\u0131 sorgu i\u00e7inde birden fazla s\u0131ralama i\u015flemi yapmak i\u00e7in ise, \u201c<strong>ThenBy<\/strong>\u201d ve \u201c<strong>ThenByDescending<\/strong>\u201d ifadelerini kullan\u0131r\u0131z.<\/p>\n\n\n\n<p>\u00d6rnek Olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable&lt;City&gt; CityList = City.Where(x =&gt; x.CounytyId == 3)\n.OrderBy(x=&gt;x.CityName).ThenBy(x=&gt;x.CounytyId);<\/code><\/pre>\n\n\n\n<p>Sonu\u00e7 : {6, \u201dAnkara\u201d, 3} , {3, \u201dBolu\u201d, 3} , {4, \u201dDenizli\u201d ,3}<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3 &#8211; Select Kullan\u0131m\u0131<\/strong> <\/h3>\n\n\n\n<p>Liste i\u00e7erisinden sadece belirledi\u011fimiz de\u011ferlerin listesini d\u00f6nd\u00fcrmek i\u00e7in kullan\u0131l\u0131r. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\u00d6rnek Olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable&lt;String&gt; x = City.Where(x =&gt; x.CounytyId == 1)\n.Select(p =&gt; p.CityName);<\/code><\/pre>\n\n\n\n<p>Sonu\u00e7 :{\u201dHannover\u201d , \u201d M\u00fcnih\u201d}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var Cities =prod City.Where(x =&gt; x.CounytyId == 1)\n.Select(x =&gt; new { x.Id, x.CityName}).ToList();<\/code><\/pre>\n\n\n\n<p>Sonu\u00e7 : {1, \u201dHannover\u201d} , {5, \u201dM\u00fcnih\u201d} <\/p>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4 &#8211; SelectMany Kullan\u0131m\u0131<\/strong><\/h3>\n\n\n\n<p>Birden fazla tablo ya da veri kayna\u011f\u0131n\u0131 birle\u015ftirip tek bir liste i\u00e7inde g\u00f6stermek i\u00e7in bu ifade kullan\u0131l\u0131r. Sql de bulunan<strong> Cross Join<\/strong> i\u015flemine benzer. <\/p>\n\n\n\n<p>\u00d6rnek Olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var  Cities= Country.SelectMany(x=&gt; Sayilar2,\n(x,y) =&gt; new{Sayi = x, Renk = y});<\/code><\/pre>\n\n\n\n<p> Sonu\u00e7 :  {1,&#8221;Beyaz&#8221;} , {3,&#8221;Beyaz&#8221;} , {7,&#8221;Beyaz&#8221;} , {7,&#8221;Beyaz&#8221;} , {1,&#8221;Mor&#8221;} , {3,&#8221; Mor &#8220;} , {7,&#8221; Mor &#8220;} , {7,&#8221; Mor &#8220;}  <\/p>\n\n\n<p>\n<!--StartFragment--><\/p>\n\n\n<h3 class=\"wp-block-heading\"><strong>5 &#8211;<\/strong> <strong>Join Kullan\u0131m\u0131<\/strong><\/h3>\n\n\n\n<p>Birden fazla tablo ya da veri kayna\u011f\u0131n\u0131 belirli bir anahtar de\u011fere g\u00f6re birle\u015ftirip tek bir liste i\u00e7inde g\u00f6stermek i\u00e7in bu ifade kullan\u0131l\u0131r. SQL de bulunan<strong> inner join<\/strong> i\u015flemine benzer.<\/p>\n\n\n\n<p>\u00d6rnek Olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var SayiListesi= Sayilar1.Join(Sayilar2, x =&gt; x, y =&gt; y,\n (x,y) =&gt; x);<\/code><\/pre>\n\n\n\n<p> Sonu\u00e7 :  {1, 3} <\/p>\n\n\n<p>\n<!--StartFragment--><\/p>\n\n\n<h3 class=\"wp-block-heading\"><strong>6 &#8211; GroupJoin Kullan\u0131m\u0131<\/strong><\/h3>\n\n\n\n<p>Birden fazla tablo ya da veri kayna\u011f\u0131n\u0131, belirli bir anahtar de\u011fere g\u00f6re gruplayarak birle\u015ftirip tek bir liste i\u00e7inde g\u00f6stermek i\u00e7in bu ifade kullan\u0131l\u0131r.  Sql de bulunan <strong>left outer join <\/strong>i\u015flemine benzer.<\/p>\n\n\n\n<p>\u00d6rnek Olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var  CitiesOfCountries= Country.GroupJoin(City, x =&gt; x.Id, y =&gt; y.CountryId,\n (x,y)=&gt; new{Country = x.CountryName, City = y.CityName});<\/code><\/pre>\n\n\n\n<p> Sonu\u00e7 :  {&#8220;Almanya&#8221;,\u201dHannover\u201d} , {&#8220;Tokyo&#8221;,&#8221;Japonya&#8221;} , { &#8220;T\u00fcrkiye&#8221; ,&#8221;Bolu&#8221;}  , { &#8220;T\u00fcrkiye&#8221; ,&#8221;Denizli&#8221;} , { &#8220;Almanya&#8221; ,\u201dM\u00fcnih\u201d}  , { &#8220;T\u00fcrkiye&#8221; ,&#8221;Ankara&#8221;} <\/p>\n\n\n<p>\n<!--StartFragment--><\/p>\n\n\n<h3 class=\"wp-block-heading\"><strong>7 &#8211; GroupBy Kullan\u0131m\u0131<\/strong><\/h3>\n\n\n\n<p>Liste i\u00e7indeki elemanlar\u0131, belirlenen anahtar de\u011fere veya ifadeye g\u00f6re gruplar.<\/p>\n\n\n\n<p>\u00d6rnek Olarak:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var SayiListesi= Sayilar1.GroupBy(x =&gt; (x % 2 == 0));<\/code><\/pre>\n\n\n\n<p> Sonu\u00e7 : {true ,  {2, 4} } , { flase , {1, 3, 5} }<\/p>\n\n\n<p>\n<!--StartFragment--><\/p>\n\n\n<h3 class=\"wp-block-heading\"> <strong>8 &#8211; Contains  Kullan\u0131m\u0131<\/strong> <\/h3>\n\n\n\n<p>Liste i\u00e7erisinde belirtilen eleman\u0131n olup olmad\u0131\u011f\u0131 bilgisini true\/false olarak d\u00f6ner. Farkl\u0131 bir kullan\u0131m olarak, &#8220;<strong>where<\/strong>&#8221; ifadesi i\u00e7inde de kullan\u0131l\u0131r.<\/p>\n\n\n\n<p> \u00d6rnek Olarak: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable SayiListesi  = Sayilar1.Contains(3);<\/code><\/pre>\n\n\n\n<p>  Sonu\u00e7 : true<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var Cities= City.Where(x =&gt; Sayilar2.Contains(x.Id))\n.Select(x=&gt;x.CityName);<\/code><\/pre>\n\n\n\n<p> Sonu\u00e7 : {&#8220;Hannover&#8221; , &#8220;Bolu&#8221;}  <\/p>\n\n\n<p>\n<!--StartFragment--><\/p>\n\n\n<h3 class=\"wp-block-heading\"> <strong>9 &#8211; All \/Any Kullan\u0131m\u0131<\/strong> <\/h3>\n\n\n\n<p>&#8220;<strong>All<\/strong>&#8221; ifadesi, liste i\u00e7erisindeki t\u00fcm elemanlar i\u00e7in, belirtilen ko\u015fulun sa\u011flan\u0131p sa\u011flanmad\u0131\u011f\u0131 bilgisini true\/false olarak d\u00f6ner. &#8220;<strong>Any<\/strong>&#8221; ifadesi ise, listedeki herhangi bir de\u011ferin, ko\u015fulu sa\u011flay\u0131p sa\u011flamad\u0131\u011f\u0131 bilgisini  true\/false olarak d\u00f6ner.<\/p>\n\n\n\n<p> \u00d6rnek Olarak: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable SayiListesi  = Sayilar1.All(x =&gt; x % 2 == 0);<\/code><\/pre>\n\n\n\n<p>  Sonu\u00e7 : false<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>var City= City.Any(n =&gt; n.StartsWith(\"B\"));<\/code><\/pre>\n\n\n\n<p>  Sonu\u00e7 : true<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong> 10 &#8211;<\/strong> <strong>Take \/<\/strong> <strong>TakeWhile<\/strong> <strong> Kullan\u0131m\u0131<\/strong> <\/h3>\n\n\n\n<p>&#8220;<strong>Take<\/strong>&#8221; komutu, liste i\u00e7inden ba\u015ftan istedi\u011fimiz kadar eleman\u0131 d\u00f6nd\u00fcrmeyi,  &#8220;<strong>TakeWhile<\/strong>&#8221; ise, belirtilen filtreleme i\u015flemine kadar olan elemanlar\u0131 d\u00f6nd\u00fcrmeyi sa\u011flar.<\/p>\n\n\n\n<p> \u00d6rnek Olarak: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable SayiListesi  = Sayilar1.Take(3);<\/code><\/pre>\n\n\n\n<p>  Sonu\u00e7 : {1, 2, 3}  <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable SayiListesi  = Sayilar1.TakeWhile(x =&gt; x&lt;3);<\/code><\/pre>\n\n\n\n<p> Sonu\u00e7 : {1, 2}  <\/p>\n\n\n<p><!--StartFragment--><\/p>\n\n\n<h3 class=\"wp-block-heading\"> <strong>11 &#8211; Skip \/ SkipWhile<\/strong> <strong> Kullan\u0131m\u0131<\/strong> <\/h3>\n\n\n\n<p>&#8220;<strong>Skip<\/strong>&#8221; komutu, liste i\u00e7inden belirtti\u011fimiz say\u0131daki eleman\u0131 atlay\u0131p, kalan listeyi d\u00f6nd\u00fcrmeyi,  &#8220;<strong>SkipWhile<\/strong>&#8221; ise, belirtilen filtreleme i\u015flemi kadar eleman\u0131 atlay\u0131p, kalan listeyi d\u00f6nd\u00fcrmeyi sa\u011flar.<\/p>\n\n\n\n<p> \u00d6rnek Olarak: <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable SayiListesi  = Sayilar1.Take(3);<\/code><\/pre>\n\n\n\n<p>  Sonu\u00e7 : {4, 5}  <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>IEnumerable SayiListesi  = Sayilar1.TakeWhile(x =&gt; x&lt;3);<\/code><\/pre>\n\n\n\n<p> Sonu\u00e7 : {3, 4, 5}  <\/p>\n\n\n\n<p> Makalenin devam\u0131 ve di\u011fer kullan\u0131mlar i\u00e7in <a href=\"http:\/\/www.yazilimmutfagi.com\/index.php\/2020\/04\/22\/linq-lambda-kullanim-notlari-2\/\">t\u0131klay\u0131n\u0131z<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lambda expressions, yani lambda &nbsp;ifadeleri, verilen filtrelere ve belirlenen kriterlere g\u00f6re, de\u011fi\u015fkenlere de\u011fer atamaya yarayan fonksiyonlar olarak d\u00fc\u015f\u00fcn\u00fclebilir. Genellikle diziler veya entity listeleri \u00fczerinde kolayca sorgu yapmam\u0131z\u0131 sa\u011flad\u0131\u011f\u0131 [&hellip;]<\/p>\n","protected":false},"author":525,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[413],"tags":[4229,4163,6542,6520,6528,6527,6521,3864,6519,5681,6523,6522,4135,6526,6533,6532,6524,6525,4958],"_links":{"self":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/4629"}],"collection":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/users\/525"}],"replies":[{"embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/comments?post=4629"}],"version-history":[{"count":25,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/4629\/revisions"}],"predecessor-version":[{"id":4697,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/posts\/4629\/revisions\/4697"}],"wp:attachment":[{"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/media?parent=4629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/categories?post=4629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.yazilimmutfagi.com\/index.php\/wp-json\/wp\/v2\/tags?post=4629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}