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 Dizideki Bir Elemanı Döngü İle Arama Örneği

Visual Basic Bir Stringin Ortadaki Üç Karakterini Bulma Örneği

Visual Basic String Remove Metodu

Visual Basic Dosyanın Uzantısını Bulma

Visual Basic Uygulama Açıksa Tekrar Açtırmama Kontrolü