Visual Basic Linq Single Kullanımı

Visual Basic 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 Property Id As Integer
    Public Property Ad As String
 End Class

 Class Sinif
    Public ReadOnly ogrenciler As List(Of Ogrenci)

    Public Sub New()
        Me.ogrenciler = OgrenciYarat().ToList()
    End Sub

    Private Iterator Function OgrenciYarat() As IEnumerable(Of Ogrenci)
        Yield New Ogrenci With { .Id = 1, .Ad = "Ali" }
        Yield New Ogrenci With { .Id = 2, .Ad = "Erdem" }
        Yield New Ogrenci With { .Id = 3, .Ad = "Ayşe" }
        Yield New Ogrenci With { .Id = 4, .Ad = "Lale" }
        Yield New Ogrenci With { .Id = 5, .Ad = "Gül" }
        Yield New Ogrenci With { .Id = 6, .Ad = "Osman" }
        Yield New Ogrenci With { .Id = 7, .Ad = "Irmak" }
        Yield New Ogrenci With { .Id = 8, .Ad = "Tarık" }
        Yield New Ogrenci With { .Id = 9, .Ad = "Osman" }        
    End Function
 End Class

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

Dim sinif As Sinif = New Sinif()
Dim kayit = sinif.ogrenciler.Single(Function(x) x.Ad = "Ali")
Dim kayit2 = sinif.ogrenciler.Single(Function(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..

Module ModuleTest
Sub Main()
        Dim sinif As Sinif = New Sinif()
        Dim kayit = sinif.ogrenciler.Single(Function(x) x.Ad = "Ali")
        Dim kayit2 = sinif.ogrenciler.Single(Function(x) x.Ad = "Osman")
    End Sub
End Module

Class Ogrenci
    Public Property Id As Integer
    Public Property Ad As String
End Class

Class Sinif
    Public ReadOnly ogrenciler As List(Of Ogrenci)

    Public Sub New()
        Me.ogrenciler = OgrenciYarat().ToList()
    End Sub

    Private Iterator Function OgrenciYarat() As IEnumerable(Of Ogrenci)
        Yield New Ogrenci With { .Id = 1, .Ad = "Ali" }
        Yield New Ogrenci With { .Id = 2, .Ad = "Erdem" }
        Yield New Ogrenci With { .Id = 3, .Ad = "Ayşe" }
        Yield New Ogrenci With { .Id = 4, .Ad = "Lale" }
        Yield New Ogrenci With { .Id = 5, .Ad = "Gül" }
        Yield New Ogrenci With { .Id = 6, .Ad = "Osman" }
        Yield New Ogrenci With { .Id = 7, .Ad = "Irmak" }
        Yield New Ogrenci With { .Id = 8, .Ad = "Tarık" }
        Yield New Ogrenci With { .Id = 9, .Ad = "Osman" }
    End Function
 End Class



İlginizi Çekebilir

Visual Basic Şimdiki Zamanı Getirmek

Visual Basic Dosya Uzantısını Değiştirme

Visual Basic Tarihe Yıl Ekleme Veya Çıkarma

Visual Basic Bir Stringteki Küçük Harfleri Öne Alma Örneği

Visual Basic Dosya Sıralama