Enumerable.OrderBy Metod

Definition

Sorterar elementen i en sekvens i stigande ordning.

Överlagringar

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

Sorterar elementen i en sekvens i stigande ordning enligt en nyckel.

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

Sorterar elementen i en sekvens i stigande ordning med hjälp av en angiven jämförelse.

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

Sorterar elementen i en sekvens i stigande ordning enligt en nyckel.

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)

Typparametrar

TSource

Typen av element sourcei .

TKey

Typ av nyckel som returneras av keySelector.

Parametrar

source
IEnumerable<TSource>

En sekvens med värden i ordning.

keySelector
Func<TSource,TKey>

En funktion för att extrahera en nyckel från ett element.

Returer

En IOrderedEnumerable<TElement> vars element sorteras enligt en nyckel.

Undantag

source eller keySelector är null.

Exempel

Följande kodexempel visar hur du använder OrderBy<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>) för att sortera elementen i en sekvens.

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

Kommentarer

Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.

Om du vill ordna en sekvens efter värdena för själva elementen anger du identitetsfunktionen (x => x i C# eller Function(x) x i Visual Basic) för keySelector.

Två metoder definieras för att utöka typen IOrderedEnumerable<TElement>, vilket är returtypen för den här metoden. Med dessa två metoder, nämligen ThenBy och ThenByDescending, kan du ange ytterligare sorteringsvillkor för att sortera en sekvens. ThenBy och ThenByDescending returnerar även ett IOrderedEnumerable<TElement>, vilket innebär valfritt antal efterföljande anrop till ThenBy eller ThenByDescending kan göras.

Note

Eftersom IOrderedEnumerable<TElement> ärver från IEnumerable<T>kan du anropa OrderBy eller OrderByDescending på resultatet av ett anrop till OrderBy, OrderByDescendingThenBy eller ThenByDescending. När du gör detta introduceras en ny primär ordning som ignorerar den tidigare etablerade ordningen.

Den här metoden jämför nycklar med hjälp av standardjäxaren Default.

Den här metoden utför en stabil sortering. Om nycklarna för två element är lika bevaras elementens ordning. En instabil sortering bevarar däremot inte ordningen på element som har samma nyckel.

I frågeuttryckssyntax översätts en orderby (C#) eller Order By-sats (Visual Basic) till ett anrop av OrderBy.

Se även

Gäller för

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

Sorterar elementen i en sekvens i stigande ordning med hjälp av en angiven jämförelse.

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)

Typparametrar

TSource

Typen av element sourcei .

TKey

Typ av nyckel som returneras av keySelector.

Parametrar

source
IEnumerable<TSource>

En sekvens med värden i ordning.

keySelector
Func<TSource,TKey>

En funktion för att extrahera en nyckel från ett element.

comparer
IComparer<TKey>

En IComparer<T> för att jämföra nycklar.

Returer

En IOrderedEnumerable<TElement> vars element sorteras enligt en nyckel.

Undantag

source eller keySelector är null.

Kommentarer

Den här metoden implementeras med uppskjuten körning. Det omedelbara returvärdet är ett objekt som lagrar all information som krävs för att utföra åtgärden. Frågan som representeras av den här metoden körs inte förrän objektet räknas upp antingen genom att anropa metoden GetEnumerator direkt eller med hjälp av foreach i C# eller For Each i Visual Basic.

Om du vill ordna en sekvens efter värdena för själva elementen anger du identitetsfunktionen (x => x i C# eller Function(x) x i Visual Basic) för keySelector.

Två metoder definieras för att utöka typen IOrderedEnumerable<TElement>, vilket är returtypen för den här metoden. Med dessa två metoder, nämligen ThenBy och ThenByDescending, kan du ange ytterligare sorteringsvillkor för att sortera en sekvens. ThenBy och ThenByDescending returnerar även ett IOrderedEnumerable<TElement>, vilket innebär valfritt antal efterföljande anrop till ThenBy eller ThenByDescending kan göras.

Note

Eftersom IOrderedEnumerable<TElement> ärver från IEnumerable<T>kan du anropa OrderBy eller OrderByDescending på resultatet av ett anrop till OrderBy, OrderByDescendingThenBy eller ThenByDescending. När du gör detta introduceras en ny primär ordning som ignorerar den tidigare etablerade ordningen.

Om comparer är nullanvänds standardjäxaren Default för att jämföra nycklar.

Den här metoden utför en stabil sortering. Om nycklarna för två element är lika bevaras elementens ordning. En instabil sortering bevarar däremot inte ordningen på element som har samma nyckel.

Se även

Gäller för