Visual Basic Linq OrderBy Kullanımı
Visual Basic dilinde, Linq bileşeni içindeki OrderBy() metodu , belirli bir koleksiyondaki öğeleri belirli bir koşula göre artan şekilde sıralamak için kullanılır. Birden fazla özelliğe göre sıralamak için ThenBy () metodunu OrderBy () 'a bağlayarak yaparız.
Örnek kodu incelemek için ilk önce 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 OrderBy() 'ı hem yöntem hem de sorgu türündeki örneklerde kullanalım.
Dim sinif As Sinif = New Sinif()
Dim sirala = sinif.ogrenciler.OrderBy(Function(x) x.Ad).ThenBy(Function(x) x.Id)
Dim siralaSorgu = From s In sinif.ogrenciler Order By s.Ad, s.Id Select s
For Each eleman In sirala
Console.WriteLine(eleman.Ad & " " & eleman.Id)
Next
Console.WriteLine()
For Each eleman In siralaSorgu
Console.WriteLine(eleman.Ad & " " & eleman.Id)
Next
Console.ReadLine()
Örneklerimizde koleksiyonumuzu ilk önce "Ad" alanına göre, aynı Ad değerine sahip olanları da kendi içinde "Id" alanına göre sıraladık.
Yöntem türü için "sirala" , sorgu türü için ise "siralaSorgu" değişkenini kullandık. Her 2 tür de bize aynı sonucu verecektir.
Tüm koda aşağıdan ulaşabilirsiniz..
Imports System
Imports System.Collections.Generic
Imports System.Linq
Module ModuleTest
Sub Main()
Dim sinif As Sinif = New Sinif()
Dim sirala = sinif.ogrenciler.OrderBy(Function(x) x.Ad).ThenBy(Function(x) x.Id)
Dim siralaSorgu = From s In sinif.ogrenciler Order By s.Ad, s.Id Select s
For Each eleman In sirala
Console.WriteLine(eleman.Ad & " " & eleman.Id)
Next
Console.WriteLine()
For Each eleman In siralaSorgu
Console.WriteLine(eleman.Ad & " " & eleman.Id)
Next
Console.ReadLine()
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