LINQ lekérdezés példák – Sorrend

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

Ebben a cikkben a rendezés mutatom be.

Ezek a példák az egyszerű rendezést mutatják be

Sub Main()
  Dim words() = {“cseresznye”, “alma”, “eper”}
  Dim sortedWords = From w In words _
                    Order By w
  Console.WriteLine(
“A szavak rendezett sorrendje:”)
  For Each w In sortedWords
    Console.WriteLine(w)
  Next
End
Sub Sub Main()
  Dim words() = {“cseresznye”, “alma”, “eper”}
  Dim sortedWords = From w In words _
                    Select w _
                    Order By w.Length
  Console.WriteLine(
“The sorted list of words (by length):”)
  For Each w In sortedWords
    Console.WriteLine(w)
  Next
End Sub

Ez a példa már egy kicsit bonyolultabb, de sokkal érdekesebb. A rendezést egy osztály felhasználásával valósítjuk meg

Sub Main()
  Dim Szavak() = {“aLMa”, “AbAcUs”, “bAnáN”, “BáLna”, “CiTRoM”, “cSeREszNye”}
  Dim rendezettSzavak = Szavak.OrderBy(Function(a) a, New CaseInsensitiveComparer())
  Console.Write(sortedWords)
End Sub
Class CaseInsensitiveComparer : Implements IComparer(Of String)
  Public Function Compare(ByVal x As String, ByVal y As String) As Integer _
    Implements System.Collections.Generic.IComparer(Of String).Compare
    Return String.Compare(x, y, True)
  End Function
End
Class

A rendezés sorrendjének megadása

Sub Main()
  Dim Szamok() = {1.7, 2.3, 1.9, 4.1, 2.9}
  Dim rendezettSzamok = From d In Szamok _
                        Select d _
                        Order By d Descending
  Console.WriteLine(“Csökkenő sorrend:”)
  For Each d In rendezettSzamok
    Console.WriteLine(d)
  Next
End
Sub

Rendezés a szöveg hossza szerint

Sub Main()
  Dim Szamok() = {“nulla”, “egy”, “kettő”, “három”, “négy”, “öt” _
               
, “hat”, “hét”, “nyolc”, “kilenc”}
  Dim rendezettSzamok = From d In Szamok _
                        Select d _
                        Order By d.Length, d
  Console.WriteLine(
“Rendezett számok:”)
  For Each d In rendezettSzamok
    Console.WriteLine(d)
  Next
End
Sub

A következő példa az OrderBy és ThenBy záradékot használja. Először a szó hossza, majd a kis- és nagy betűk szerint rendezzük a tömb elemeit

Sub Main()
  Dim Szavak() = {“aLMa”, “AbAcUs”, “bAnáN”, “BáLna”, “CiTRoM”, “cSeREszNye”}
  Dim rendezettSzavak = Szavak.OrderBy( _
                        Function(a) a.Length).ThenByDescending( _
                        Function(a) a, New CaseInsensitiveComparer())
  For Each szo In rendezettSzavak
    Console.WriteLine(szo)
  Next
End
Sub 
Class CaseInsensitiveComparer : Implements IComparer(Of String)
  Public Function Compare(ByVal x As String, ByVal y As String) As Integer _
  Implements System.Collections.Generic.IComparer(Of String).Compare
    Return String.Compare(x, y, True)
  End Function
End
Class

Ez a példa a Reverse-t használja a tömb rendezéséhez, de csak azokat az elemeket veszi figyelembe, ahol a második karakter é betű

Sub Main()
  Dim Szamok() = {“nulla”, “egy”, “kettő”, “három”, “négy”, “öt”, “hat”, “hét”, “nyolc”, “kilenc”}
  Dim forditottSzamok = (From d In Szamok _
                         Where d(1) = “é” _
                         Select d).Reverse()
  Console.WriteLine(
“Fordított lista (é betű a második karakter):”)
  For Each d In forditottSzamok
    Console.WriteLine(d)
  Next
End
Sub

MEGOSZTÁS

Ha tetszett a cikk, akkor nyugodtan oszd meg ismerőseiddel, valószínű ők is örülni fognak neki.

HOZZÁSZÓLÁS

Ha nem hagy nyugodni az, amit a cikkben olvastál, akkor nyugodtan írd meg kérdésed vagy észrevételed kommentbe. Így szerzőnk könnyen tud neked válaszolni.

Vélemény, hozzászólás?