Enumerable.OrderBy Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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ż
- OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
- OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- Klauzula orderby (odwołanie w C#)
- Order By — Klauzula (Visual Basic)
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ż
- OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
- OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)