Enumerable.OrderBy Metoda

Definicja

Sortuje elementy sekwencji w kolejności rosnącej.

Przeciążenia

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Sortuje elementy sekwencji w kolejności rosnącej zgodnie z kluczem.

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Sortuje elementy sekwencji w kolejności rosnącej przy użyciu określonego porównania.

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs

Sortuje elementy sekwencji w kolejności rosnącej zgodnie z kluczem.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ OrderBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector);
public static System.Linq.IOrderedEnumerable<TSource> OrderBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector);
static member OrderBy : seq<'Source> * Func<'Source, 'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function OrderBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey)) As IOrderedEnumerable(Of TSource)

Parametry typu

TSource

Typ elementów elementu source.

TKey

Typ klucza zwróconego przez keySelector.

Parametry

source
IEnumerable<TSource>

Sekwencja wartości do ustawienia w kolejności.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z elementu.

Zwraca

Element IOrderedEnumerable<TElement> , którego elementy są sortowane zgodnie z kluczem.

Wyjątki

source lub keySelector to null.

Przykłady

Poniższy przykład kodu przedstawia sposób OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) sortowania elementów sekwencji.

class Pet
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public static void OrderByEx1()
{
    Pet[] pets = { new Pet { Name="Barley", Age=8 },
                   new Pet { Name="Boots", Age=4 },
                   new Pet { Name="Whiskers", Age=1 } };

    IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);

    foreach (Pet pet in query)
    {
        Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
    }
}

/*
 This code produces the following output:

 Whiskers - 1
 Boots - 4
 Barley - 8
*/
Structure Pet
    Public Name As String
    Public Age As Integer
End Structure

Sub OrderByEx1()
    ' Create an array of Pet objects.
    Dim pets() As Pet = {New Pet With {.Name = "Barley", .Age = 8},
                     New Pet With {.Name = "Boots", .Age = 4},
                     New Pet With {.Name = "Whiskers", .Age = 1}}

    ' Order the Pet objects by their Age property.
    Dim query As IEnumerable(Of Pet) =
    pets.OrderBy(Function(pet) pet.Age)

    Dim output As New System.Text.StringBuilder
    For Each pt As Pet In query
        output.AppendLine(pt.Name & " - " & pt.Age)
    Next

    ' Display the output.
    Console.WriteLine(output.ToString())
End Sub

' This code produces the following output:
'
' Whiskers - 1
' Boots - 4
' Barley - 8

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczony, wywołując metodę GetEnumerator bezpośrednio lub używając w foreach języku C# lub For Each w Visual Basic.

Aby zamówić sekwencję według samych wartości elementów, określ funkcję identity (x => x w języku C# lub Function(x) x Visual Basic) dla elementu keySelector.

Dwie metody są definiowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, czyli typu zwracanego tej metody. Te dwie metody, a mianowicie ThenBy i ThenByDescending, umożliwiają określenie dodatkowych kryteriów sortowania w celu sortowania sekwencji. ThenBy a ThenByDescending także zwrócić element , co oznacza, że dowolna IOrderedEnumerable<TElement>liczba kolejnych wywołań do ThenBy lub ThenByDescending może zostać wykonana.

Uwaga

Ponieważ IOrderedEnumerable<TElement> dziedziczy z IEnumerable<T>klasy , można wywołać wywołanie OrderBy lub OrderByDescending na podstawie wyników wywołania metody OrderBy, OrderByDescendingThenBy lub ThenByDescending. Ten sposób wprowadza nowe podstawowe ustawianie kolejności, które ignoruje ustanowiony wcześniej sposób ustawiania.

Ta metoda porównuje klucze przy użyciu domyślnego modułu porównującego Default.

Ta metoda wykonuje stabilne sortowanie; oznacza to, że jeśli klawisze dwóch elementów są równe, kolejność elementów jest zachowywana. Z drugiej strony, niestabilne sortowanie nie pozwala zachować kolejności elementów, które mają ten sam klucz.

W składni wyrażenia zapytania klauzula orderby (C#) lub Order By (Visual Basic) tłumaczy się na wywołanie OrderBy.

Zobacz też

Dotyczy

OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)

Źródło:
OrderBy.cs
Źródło:
OrderBy.cs
Źródło:
OrderBy.cs

Sortuje elementy sekwencji w kolejności rosnącej przy użyciu określonego porównania.

public:
generic <typename TSource, typename TKey>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IOrderedEnumerable<TSource> ^ OrderBy(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, TKey> ^ keySelector, System::Collections::Generic::IComparer<TKey> ^ comparer);
public static System.Linq.IOrderedEnumerable<TSource> OrderBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey> comparer);
public static System.Linq.IOrderedEnumerable<TSource> OrderBy<TSource,TKey> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,TKey> keySelector, System.Collections.Generic.IComparer<TKey>? comparer);
static member OrderBy : seq<'Source> * Func<'Source, 'Key> * System.Collections.Generic.IComparer<'Key> -> System.Linq.IOrderedEnumerable<'Source>
<Extension()>
Public Function OrderBy(Of TSource, TKey) (source As IEnumerable(Of TSource), keySelector As Func(Of TSource, TKey), comparer As IComparer(Of TKey)) As IOrderedEnumerable(Of TSource)

Parametry typu

TSource

Typ elementów elementu source.

TKey

Typ klucza zwróconego przez keySelector.

Parametry

source
IEnumerable<TSource>

Sekwencja wartości do ustawienia w kolejności.

keySelector
Func<TSource,TKey>

Funkcja wyodrębniania klucza z elementu.

comparer
IComparer<TKey>

Element do IComparer<T> porównywania kluczy.

Zwraca

Element IOrderedEnumerable<TElement> , którego elementy są sortowane zgodnie z kluczem.

Wyjątki

source lub keySelector to null.

Uwagi

Ta metoda jest implementowana za pomocą odroczonego wykonania. Bezpośrednio zwracana wartość jest obiektem, który przechowuje wszystkie informacje wymagane do wykonania akcji. Zapytanie reprezentowane przez tę metodę nie jest wykonywane, dopóki obiekt nie zostanie wyliczony, wywołując metodę GetEnumerator bezpośrednio lub używając w foreach języku C# lub For Each w Visual Basic.

Aby zamówić sekwencję według samych wartości elementów, określ funkcję identity (x => x w języku C# lub Function(x) x Visual Basic) dla elementu keySelector.

Dwie metody są definiowane w celu rozszerzenia typu IOrderedEnumerable<TElement>, czyli typu zwracanego tej metody. Te dwie metody, a mianowicie ThenBy i ThenByDescending, umożliwiają określenie dodatkowych kryteriów sortowania w celu sortowania sekwencji. ThenBy a ThenByDescending także zwrócić element , co oznacza, że dowolna IOrderedEnumerable<TElement>liczba kolejnych wywołań do ThenBy lub ThenByDescending może zostać wykonana.

Uwaga

Ponieważ IOrderedEnumerable<TElement> dziedziczy z IEnumerable<T>klasy , można wywołać wywołanie OrderBy lub OrderByDescending na podstawie wyników wywołania metody OrderBy, OrderByDescendingThenBy lub ThenByDescending. Ten sposób wprowadza nowe podstawowe ustawianie kolejności, które ignoruje ustanowiony wcześniej sposób ustawiania.

Jeśli comparer jest to null, domyślny moduł porównujący jest używany do porównywania Default kluczy.

Ta metoda wykonuje stabilne sortowanie; oznacza to, że jeśli klawisze dwóch elementów są równe, kolejność elementów jest zachowywana. Z drugiej strony, niestabilne sortowanie nie pozwala zachować kolejności elementów, które mają ten sam klucz.

Zobacz też

Dotyczy