C# Linq Single Kullanımı

C# programlama dilinde, Linq bileşeni içindeki Single() metodu, koleksiyondaki belirli bir koşulu karşılayan tek öğeyi döndürür.

Single() metodunu kullanırken dikkat edilmesi gereken nokta, koleksiyonda koşulu karşılayan yalnızca tek bir öğenin olması gerektiğidir. Single () metodu için koşulu sağlayan birden fazla öğe varsa veya hiçbir öğe yoksa exception yaratılır.

Aşağıdaki örneği inceleyelim..

İlk olarak koleksiyonumuzun (collection) oluşturulduğu Ogrenci ve Sinif class larımızı hazırlayalım.

class Ogrenci 
{
        public int Id { get; set; }
        public string Ad { get; set; }
}

class Sinif 
{
        public readonly List ogrenciler;
        public Sinif() 
        {
            this.ogrenciler = OgrenciYarat().ToList();
        }

        private IEnumerable OgrenciYarat()
        {
            yield return new Ogrenci { Id = 1, Ad = "Ali" };
            yield return new Ogrenci { Id = 2, Ad = "Erdem" };
            yield return new Ogrenci { Id = 3, Ad = "Ayşe" };
            yield return new Ogrenci { Id = 4, Ad = "Lale" };
            yield return new Ogrenci { Id = 5, Ad = "Gül" };
            yield return new Ogrenci { Id = 6, Ad = "Osman" };
            yield return new Ogrenci { Id = 7, Ad = "Irmak" };
            yield return new Ogrenci { Id = 8, Ad = "Tarık" };
            yield return new Ogrenci { Id = 9, Ad = "Osman" };
        }
} 

Oluşturulan sınıflarımızla birlikte Single() metodumuzu kullanalım.

Sinif sinif = new Sinif();
var kayit = sinif.ogrenciler.Single(x => x.Ad == "Ali");
var kayit2 = sinif.ogrenciler.Single(x => x.Ad == "Osman");    

Örnekte "kayit" değişkenimize adının "Ali" olması koşulunun sağlandığı bir kayıt atadık. Bu koşulu sağlayan sadece 1 kayıt olduğu için Single() metodu sorunsuz çalıştı.

İkinci örneğimizde "kayit2" değişkenimize adının "Osman" olması koşulunun sağlandığı bir kayıt atamaya çalıştık. Bu koşulu sağlayan 2 kayıdımız olduğu için işlem başarısız oldu ve aşağıdaki hatayı aldık.

Sequence contains more than one matching element
"Sıra birden fazla eşleşen öğe içeriyor"

Tüm koda aşağıdan ulaşabilirsiniz..

using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplicationTest
{
    class Program {

        static void Main(string[] args) {            
            Sinif sinif = new Sinif();
            var kayit = sinif.ogrenciler.Single(x => x.Ad == "Ali");
            var kayit2 = sinif.ogrenciler.Single(x => x.Ad == "Osman");            
        }
}

class Ogrenci 
{
        public int Id { get; set; }
        public string Ad { get; set; }
}

class Sinif 
{
        public readonly List ogrenciler;
        public Sinif() 
        {
            this.ogrenciler = OgrenciYarat().ToList();
        }

        private IEnumerable OgrenciYarat()
        {
            yield return new Ogrenci { Id = 1, Ad = "Ali" };
            yield return new Ogrenci { Id = 2, Ad = "Erdem" };
            yield return new Ogrenci { Id = 3, Ad = "Ayşe" };
            yield return new Ogrenci { Id = 4, Ad = "Lale" };
            yield return new Ogrenci { Id = 5, Ad = "Gül" };
            yield return new Ogrenci { Id = 6, Ad = "Osman" };
            yield return new Ogrenci { Id = 7, Ad = "Irmak" };
            yield return new Ogrenci { Id = 8, Ad = "Tarık" };
            yield return new Ogrenci { Id = 9, Ad = "Osman" };
        }
    }
}

C#

İlginizi Çekebilir

C# Bip Sesi Çıkartmak

C# Dictionary'de Bir Anahtarın Varlığını Kontrol Etmek

C# List'e Eleman Ekleme

C# MessageBox Tamam Düğmesine Göre İşlem Yaptırmak

C# String Aynı Karakterlerin Silinmesi