Enumerable.OrderBy Метод

Определение

Сортирует элементы последовательности в порядке возрастания.

Перегрузки

Имя Описание
OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)

Сортирует элементы последовательности в порядке возрастания в соответствии с ключом.

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

Сортирует элементы последовательности в порядке возрастания с помощью указанного сравнения.

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

Сортирует элементы последовательности в порядке возрастания в соответствии с ключом.

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)

Параметры типа

TSource

Тип элементов source.

TKey

Тип ключа, возвращаемого keySelector.

Параметры

source
IEnumerable<TSource>

Последовательность значений для упорядочивания.

keySelector
Func<TSource,TKey>

Функция для извлечения ключа из элемента.

Возвращаемое значение

Элементы IOrderedEnumerable<TElement> , элементы которых отсортированы по ключу.

Исключения

source или keySelector есть null.

Примеры

В следующем примере кода показано, как сортировать OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) элементы последовательности.

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

Комментарии

Этот метод реализуется с помощью отложенного выполнения. Немедленное возвращаемое значение — это объект, в который хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется, пока объект не перечисляется путем вызова метода GetEnumerator напрямую или с помощью метода foreach в C# или For Each в Visual Basic.

Чтобы упорядочить последовательность по значениям самих элементов, укажите функцию идентификации (x => x в C# или Function(x) x в Visual Basic) для keySelector.

Два метода определяются для расширения типа IOrderedEnumerable<TElement>, который является возвращаемым типом этого метода. Эти два метода, а именно ThenBy и ThenByDescending, позволяют указать дополнительные критерии сортировки для сортировки последовательности. ThenBy а ThenByDescending также возвращает значение IOrderedEnumerable<TElement>, которое означает любое число последовательных вызовов ThenBy или ThenByDescending может быть выполнено.

Note

Так как IOrderedEnumerable<TElement> наследуется от IEnumerable<T>, вы можете вызвать OrderBy или OrderByDescending результаты вызова OrderBy, OrderByDescendingThenBy или ThenByDescending. В этом случае представлено новое первичное упорядочение, которое игнорирует ранее установленное порядок.

Этот метод сравнивает ключи с помощью средства Defaultсравнения по умолчанию.

Этот метод выполняет стабильную сортировку; То есть, если ключи двух элементов равны, порядок элементов сохраняется. В отличие от этого, нестабильная сортировка не сохраняет порядок элементов с одинаковым ключом.

В синтаксисе выражения запроса предложение orderby (C#) или Order By (Visual Basic) преобразуется в вызов OrderBy.

См. также раздел

Применяется к

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

Сортирует элементы последовательности в порядке возрастания с помощью указанного сравнения.

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);
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)

Параметры типа

TSource

Тип элементов source.

TKey

Тип ключа, возвращаемого keySelector.

Параметры

source
IEnumerable<TSource>

Последовательность значений для упорядочивания.

keySelector
Func<TSource,TKey>

Функция для извлечения ключа из элемента.

comparer
IComparer<TKey>

Сравнение IComparer<T> ключей.

Возвращаемое значение

Элементы IOrderedEnumerable<TElement> , элементы которых отсортированы по ключу.

Исключения

source или keySelector есть null.

Комментарии

Этот метод реализуется с помощью отложенного выполнения. Немедленное возвращаемое значение — это объект, в который хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется, пока объект не перечисляется путем вызова метода GetEnumerator напрямую или с помощью метода foreach в C# или For Each в Visual Basic.

Чтобы упорядочить последовательность по значениям самих элементов, укажите функцию идентификации (x => x в C# или Function(x) x в Visual Basic) для keySelector.

Два метода определяются для расширения типа IOrderedEnumerable<TElement>, который является возвращаемым типом этого метода. Эти два метода, а именно ThenBy и ThenByDescending, позволяют указать дополнительные критерии сортировки для сортировки последовательности. ThenBy а ThenByDescending также возвращает значение IOrderedEnumerable<TElement>, которое означает любое число последовательных вызовов ThenBy или ThenByDescending может быть выполнено.

Note

Так как IOrderedEnumerable<TElement> наследуется от IEnumerable<T>, вы можете вызвать OrderBy или OrderByDescending результаты вызова OrderBy, OrderByDescendingThenBy или ThenByDescending. В этом случае представлено новое первичное упорядочение, которое игнорирует ранее установленное порядок.

Если comparer это nullтак, для сравнения ключей используется средство Default сравнения ключей по умолчанию.

Этот метод выполняет стабильную сортировку; То есть, если ключи двух элементов равны, порядок элементов сохраняется. В отличие от этого, нестабильная сортировка не сохраняет порядок элементов с одинаковым ключом.

См. также раздел

Применяется к