![]()
Linq ile datalarımızı çekerken bazen tek bir data yada ilk data yada varsayılan bir data yada son data yada çekilen data yok ise yerine null döndürülmesi gibi işlemleri sıklıkla yapıyoruz. Linq da bu işlemleri de First() , FirstOrDefault() , Single() , SingleOrDefault() , Last() , LastOrDefault() , DefaultIfEmpty() methodlarını kullanarak yapıyoruz. Şimdi tek tek bunları inceleyelim.
First() : Çekilen veri içerisinden ilk elemanı seçmek için kullanılmaktadır. Eğer birden fazla sonuç dönerse yine ilk elemanı seçecektir. First() kullanırken geriye bir sonucun döndüğünden emin olmanız gerekmektedir. Eğer herhangi bir sonuç dönmezse InvalidOperationException hatası alınacaktır.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.First(); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 1 ————————————————————– int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.First(i => i >= 3); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 3 ————————————————————– int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.First(i => i >= 6); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: System.InvalidOperationException |
FirstOrDefault() : Bu da çekilen veri içerisinden ilk elemanı seçmek için kullanılmaktadır. Eğer birden fazla sonuç dönerse yine ilk elemanı seçecektir. First() methodundan farkı ise tam sayıların varsayalın değerini sıfır(0), bir nesne ise null değerini döndürür.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.FirstOrDefault(); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 1 ————————————————————— int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.FirstOrDefault(i => i>= 3); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 3 ————————————————————— int[] sayilar = { 1, 2, 3, 4, 5 }; string[] isimler = { “Ali”, “Ayşe”, “Hasan”, “Hüseyin” }; int sayilarSonuc = sayilar.FirstOrDefault(i => i >= 6); var isimlerSonuc = isimler.FirstOrDefault(i => i == “Hakan”); Console.WriteLine(sayilarSonuc); Console.WriteLine(isimlerSonuc == null ? “İsim Bulunamadı” : isimlerSonuc); //yada if (isimlerSonuc != null) Console.WriteLine(isimlerSonuc); else Console.WriteLine(“İsim bulunamadı”); //Output: 0 //İsim Bulunamadı //İsim Bulunamadı |
Single() : Çekilen veri içerisinden şartımızı koşmak şartı ile bir tane(tek) eleman seçmek için kullanılmaktadır. Eğer birden fazla sonuç dönerse yada herhangi bir sonuç dönmezse InvalidOperationException hatası alınacaktır. Şart koşmazsak yine InvalidOperationException hatası alırız.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
int[] sayilar = { 1, 2, 3, 4, 5 }; int sayilarSonuc = sayilar.Single(i => i == 3); Console.WriteLine(sayilarSonuc); //Output: 3 —————————————————— int[] sayilar = { 1, 2, 3, 4, 5 }; int result1 = sayilar.Single(i => i >= 3); int result2 = sayilar.Single(); Console.WriteLine(“Sonuç1: {0}”, result1); Console.WriteLine(“Sonuç2: {0}”, result2); //Output: //Sonuç1: System.InvalidOperationException //Sonuç2: System.InvalidOperationException |
SingleOrDefault() : Çekilen veri içerisinden şartımızı koşmak şartı ile bir tane(tek) eleman seçmek için kullanılmaktadır. Eğer birden fazla sonuç dönerse InvalidOperationException hatası alınacaktır eğer şartımıza uyan herhangi bir sonuç dönmezse tam sayıların varsayalın değerini sıfır(0), bir nesne ise null değerini döndürür.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.SingleOrDefault(); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: InvalidOperationException ————————————————————— int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.SingleOrDefault(i => i >= 3); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: InvalidOperationException ————————————————————— int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.SingleOrDefault(i => i == 3); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 3 ——————————————————————– int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.SingleOrDefault(i => i >= 6); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 0 ———————————————————————– string[] isimler = { “Ali”, “Ayşe”, “Hasan”, “Hüseyin” }; var isimlerSonuc = isimler.SingleOrDefault(i => i == “Hakan”); Console.WriteLine(isimlerSonuc == null ? “İsim Bulunamadı” : isimlerSonuc); //yada if (isimlerSonuc != null) Console.WriteLine(isimlerSonuc); else Console.WriteLine(“İsim bulunamadı”); //Output: //İsim Bulunamadı //İsim Bulunamadı |
Last() : Çekilen verinin son elemanını almak için kullanılmaktadır. Eğer birden fazla sonuç dönerse dönen sonucun son elemanı alınacaktır. Eğer şartımıza uyan herhangi bir sonuç dönmezse yada liste boş ise InvalidOperationException hatası alınacaktır.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.Last(); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 5 —————————————————————— int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.Last(i => i < 3); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 2 —————————————————————— int[] objList1 = { 1, 2, 3, 4, 5 }; int[] objList2 = { }; int result1 = objList1.Last(i => i>=6); int result2 = objList2.Last(); Console.WriteLine(“Sonuç1: {0}”, result1); Console.WriteLine(“Sonuç2: {0}”, result2); //Output: //Sonuç1: InvalidOperationException //Sonuç2: InvalidOperationException |
LastOrDefault() : Çekilen verinin son elemanını almak için kullanılmaktadır. Eğer birden fazla sonuç dönerse dönen sonucun son elemanı alınacaktır.
Eğer şartımıza uyan herhangi bir sonuç dönmezse tam sayıların varsayalın değerini sıfır(0), bir nesne ise null değerini döndürür.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.LastOrDefault(); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 5 ————————————————— int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.LastOrDefault(i => i < 3); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 2 ———————————————————– int[] objList = { 1, 2, 3, 4, 5 }; int result = objList.LastOrDefault(i => i >= 6 ); Console.WriteLine(“Sonuç: {0}”, result); //Output: //Sonuç: 0 ————————————————————— string[] isimler = { “Ali”, “Ayşe”, “Hasan”, “Hüseyin” }; var isimlerSonuc = isimler.LastOrDefault(i => i == “Hakan”); Console.WriteLine(isimlerSonuc == null ? “İsim Bulunamadı” : isimlerSonuc); //yada if (isimlerSonuc != null) Console.WriteLine(isimlerSonuc); else Console.WriteLine(“İsim bulunamadı”); //Output: //İsim Bulunamadı //İsim Bulunamadı |
DefaultIfEmpty() : Çekilen liste boşsa varsayılan bir değer döndürmek için kullanılır. Eğer boş değilse listenin kendisini dönderir. Genellikle listenin boş gelme durumlarında kullanılır. Join işlemlerinde de sıklıkla kullanılır.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
int[] List1 = { 1, 2, 3, 4, 5 }; int[] List2 = { }; var result1 = List1.DefaultIfEmpty(); var result2 = List2.DefaultIfEmpty(); foreach (var res1 in result1) { Console.WriteLine(“Sonuç1: {0}”, res1); } foreach (var res2 in result2) { Console.WriteLine(“Sonuç2: {0}”, res2); } //Output: //Sonuç1 : 1,2,3,4,5 //Sonuç2 : 0 |
sağlıcakla kalın….








Bir yanıt yazın