Linq'da bir listeden seçim yaparken kullanabileceğimiz metotlar vardır.
First() ile FirstOrDefault() metotlarının farkı
First metodu, bir liste içerisindeki ilk elemanı seçmek için kullanılır.
First metodunu kullanmak için dizimizin adından sonra çağırmamız yeterlidir.
FirstOrDefault() Metodu
FirstOrDefault metodunu kullanmak için dizimizin adından sonra çağırmamız yeterlidir. Bu şekilde kullanmamız bize ilk elemanı döndürecektir.
Özet olarak bu dört metodu bir tabloda anlatacak olursak
- First()
- FirstOrDefault()
- Single()
- SingleOrDefault()
First() ile FirstOrDefault() metotlarının farkı
First metodu, bir liste içerisindeki ilk elemanı seçmek için kullanılır.
- Birden fazla sonuç dönüyorsa, sonuç kümesindeki ilk elemanı döndürür.
- İstenen koşulda bir eleman yoksa, InvalıdOperationException hatası döndürecektir.
- Birden fazla sonuç dönüyorsa, sonuç kümesindeki ilk elemanı döndürür.
- Ek olarak, istenen koşulda eleman yoksa varsayılan değer olarak; dönüş tipi int ise 0, string, char ise null olarak döndürecektir.
Single() ile SingleOrDefault() metotlarının farkı
Single metodu, veritabanında Id kolonu gibi tek bir veri döneceği kesin olan durumlarda kullanılır.
First metodundan farkı istenilen koşula uygun tek bir eleman seçimi yapılacaktır, ilk elemanı seçme işlemi First metodu ile yapılıyordu.
Aşağıdaki durumlar oluştuğu takdirde InvalıdOperationException hatası alacağız.
Örnek olarak 3 adet farklı tipte dizimiz olsun ve bütün metodları bu dizilerde kullanalım.
Single() Metodu Kullanımı
Single() metodunu kullanmak için dizimizin adından sonra çağırmamız yeterlidir.
Single metodu, veritabanında Id kolonu gibi tek bir veri döneceği kesin olan durumlarda kullanılır.
First metodundan farkı istenilen koşula uygun tek bir eleman seçimi yapılacaktır, ilk elemanı seçme işlemi First metodu ile yapılıyordu.
Aşağıdaki durumlar oluştuğu takdirde InvalıdOperationException hatası alacağız.
- İstenen koşula uygun veri olmaması
- Birden fazla veri olması
SingleOrDefault metodu da tek bir veri seçimi yapan metottur.
Aşağıdaki durum oluştuğu taktirde InvalıdOperationException hatası alacağız.
- Birden fazla veri olması
Eğer istenen koşulda eleman yoksa varsayılan değer olarak; dönüş tipi int ise 0, string, char ise null olarak döndürecektir.
Örnek olarak 3 adet farklı tipte dizimiz olsun ve bütün metodları bu dizilerde kullanalım.
int[] sayilar = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; char[] karakterler = { 'a', 'b', 'c', 'd', 'e' }; string[] kelimeler = { "mert", "ali", "ayhan" };
Single() Metodu Kullanımı
Single() metodunu kullanmak için dizimizin adından sonra çağırmamız yeterlidir.
var intsingle = sayilar.Single(x => x == 3); //Sonuç 3 var charsingle = karakterler.Single(x => x == 'e'); //Sonuç e var stringsingle = kelimeler.Single(x => x == "mert"); //Sonuç mert //İstenen koşula uygun veri olmamasından dolayı hata fırlatır. var intsingle= sayilar.Single(x => x == 20); var charsingle = karakterler.Single(x => x > 'e'); var stringsingle = kelimeler.Single(x => x == "mer"); //Birden fazla veri olduğu için hata fırlatır. var intsingle = sayilar.Single(); var charsingle = karakterler.Single(); var stringsingle = kelimeler.Single();
SingleOrDefault() Metodu Kullanımı
SingleOrDefault() metodunu kullanmak için dizimizin adından sonra çağırmamız yeterlidir.
First() MetoduSingleOrDefault() metodunu kullanmak için dizimizin adından sonra çağırmamız yeterlidir.
var intSingleOrDefault= sayilar.SingleOrDefault(x => x == 20); //Sonuç 0 var charSingleOrDefault = karakterler.SingleOrDefault(x => x > 'e'); //Sonuç null (Console'da boş değer) var stringSingleOrDefault= kelimeler.SingleOrDefault(x => x == "mer"); //Sonuç null (Console'da boş değer) //Birden fazla değer olduğu için hata alacağız. var intSingleOrDefault = sayilar.SingleOrDefault(); var charSingleOrDefault = karakterler.SingleOrDefault(); var stringSingleOrDefault = kelimeler.SingleOrDefault(); var intSingleOrDefault = sayilar.SingleOrDefault(x => x == 3); //Sonuç 3 var charSingleOrDefault = karakterler.SingleOrDefault(x => x == 'e'); //Sonuç e var stringSingleOrDefault = kelimeler.SingleOrDefault(x => x == "mert"); //Sonuç mert
First metodunu kullanmak için dizimizin adından sonra çağırmamız yeterlidir.
var intfirst = sayilar.First(); //Sonuç 1 var charfirst = karakterler.First(); //Sonuç a var stringfirst = kelimeler.First(); //Sonuç mert var intfirst= sayilar.First(x => x > 6); //Sonuç 7 var charfirst= karakterler.First(x => x > 'b'); //Sonuç c var stringfirst = kelimeler.First(x => x == "ali"); //Sonuç ali //Alttaki kod satırlarında InvalidOperationException hatası alacağız. İstenen koşula uygun veri olamadığından dolayı var intfirst = sayilar.First(x => x == 20); var charfirst= karakterler.First(x => x > 'e'); var stringfirst = kelimeler.First(x => x == "mer");
FirstOrDefault() Metodu
FirstOrDefault metodunu kullanmak için dizimizin adından sonra çağırmamız yeterlidir. Bu şekilde kullanmamız bize ilk elemanı döndürecektir.
var intfirstOrDefault = sayilar.FirstOrDefault(); //Sonuç 1 var charfirstOrDefault = karakterler.FirstOrDefault(); //Sonuç a var stringfirstOrDefault = kelimeler.FirstOrDefault(); //Sonuç mert
var intfirstOrDefault = sayilar.FirstOrDefault(x => x > 6); //Sonuç 7 var charfirstOrDefault = karakterler.FirstOrDefault(x => x > 'b'); //Sonuç c var stringfirstOrDefault = kelimeler.FirstOrDefault(x => x == "ali"); //Sonuç ali var intfirstOrDefault = sayilar.FirstOrDefault(x => x == 20); //Sonuç 0 var charfirstOrDefault = karakterler.FirstOrDefault(x => x > 'e'); //Sonuç null (Console'da boş değer) var stringfirstOrDefault = kelimeler.FirstOrDefault(x => x == "mer"); //Sonuç null (Console'da boş değer)
Özet olarak bu dört metodu bir tabloda anlatacak olursak
Metot | Veri Yoksa | Tek Veri | Birden Fazla Veri |
Single | Hata | Tek Veri | Hata |
First | Hata | İlk Veri | İlk Veri |
SingleOrDefault | Varsayılan | Tek Veri | Hata |
FirstOrDefault | Varsayılan | İlk Veri | İlk Veri |
Yorumlar
Yorum Gönder