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<TSource>

Объект 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 помощью в Visual C# или в For Each Visual Basic.

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

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

Примечание

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

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

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

в синтаксисе выражения запроса orderby предложение (Visual 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);
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<TSource>

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

Исключения

Параметр source или keySelector имеет значение null.

Комментарии

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

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

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

Примечание

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

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

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

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

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