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 modułu porównującego. |
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 według klucza.
Wyjątki
source
lub keySelector
ma wartość null
.
Przykłady
W poniższym przykładzie kodu pokazano, jak używać OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) metody 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 wyliczone przez wywołanie metody GetEnumerator
bezpośrednio lub przy użyciu foreach
języka C# lub For Each
w Visual Basic.
Aby uporządkować sekwencję według samych wartości elementów, określ funkcję tożsamości (x => x
w języku C# lub Function(x) x
Visual Basic) dla elementu keySelector
.
Zdefiniowano dwie metody w celu rozszerzenia typu IOrderedEnumerable<TElement>, który jest zwracany typ 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 zwraca wartość , 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>metody , można wywołać OrderBy metodę lub OrderByDescending na wynikach 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 Defaultporównującego .
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żeń zapytania klauzula orderby
(C#) lub Order By
(Visual Basic) przekłada się na wywołanie OrderByelementu .
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 modułu porównującego.
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 IComparer<T> do porównywania kluczy.
Zwraca
Element IOrderedEnumerable<TElement> , którego elementy są sortowane według klucza.
Wyjątki
source
lub keySelector
ma wartość 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 wyliczone przez wywołanie metody GetEnumerator
bezpośrednio lub przy użyciu foreach
języka C# lub For Each
w Visual Basic.
Aby uporządkować sekwencję według samych wartości elementów, określ funkcję tożsamości (x => x
w języku C# lub Function(x) x
Visual Basic) dla elementu keySelector
.
Zdefiniowano dwie metody w celu rozszerzenia typu IOrderedEnumerable<TElement>, który jest zwracany typ 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 zwraca wartość , 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>metody , można wywołać OrderBy metodę lub OrderByDescending na wynikach 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
parametr ma null
wartość , domyślny moduł Default porównujący jest używany do porównywania 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>)
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla