Enumerable.OrderBy Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
- OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
- OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)
- orderby-sats (C#-referens)
- Order By Clause (Visual Basic)
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
- OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>)
- OrderByDescending<TSource,TKey>(IEnumerable<TSource>, Func<TSource,TKey>, IComparer<TKey>)