Enumerable.Take<TSource>(IEnumerable<TSource>, Int32) Metod

Definition

Returnerar ett angivet antal sammanhängande element från början av en sekvens.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TSource> ^ Take(System::Collections::Generic::IEnumerable<TSource> ^ source, int count);
public static System.Collections.Generic.IEnumerable<TSource> Take<TSource>(this System.Collections.Generic.IEnumerable<TSource> source, int count);
static member Take : seq<'Source> * int -> seq<'Source>
<Extension()>
Public Function Take(Of TSource) (source As IEnumerable(Of TSource), count As Integer) As IEnumerable(Of TSource)

Typparametrar

TSource

Typen av element sourcei .

Parametrar

source
IEnumerable<TSource>

Sekvensen som elementen ska returneras från.

count
Int32

Antalet element som ska returneras.

Returer

IEnumerable<TSource>

En IEnumerable<T> som innehåller det angivna antalet element från början av indatasekvensen.

Undantag

source är null.

Exempel

Följande kodexempel visar hur du använder Take för att returnera element från början av en sekvens (när den har sorterats).

int[] grades = { 59, 82, 70, 56, 92, 98, 85 };

IEnumerable<int> topThreeGrades =
    grades.OrderByDescending(grade => grade).Take(3);

Console.WriteLine("The top three grades are:");
foreach (int grade in topThreeGrades)
{
    Console.WriteLine(grade);
}
/*
 This code produces the following output:

 The top three grades are:
 98
 92
 85
*/
' Create an array of Integer values that represent grades.
Dim grades() As Integer = {59, 82, 70, 56, 92, 98, 85}

' Get the highest three grades by first sorting
' them in descending order and then taking the
' first three values.
Dim topThreeGrades As IEnumerable(Of Integer) =
grades _
.OrderByDescending(Function(grade) grade) _
.Take(3)

' Display the results.
Dim output As New System.Text.StringBuilder("The top three grades are:" & vbCrLf)
For Each grade As Integer In topThreeGrades
    output.AppendLine(grade)
Next
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' The top three grades are:
' 98
' 92
' 85

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.

Take source räknar upp och ger element tills count elementen har getts eller source innehåller inga fler element. Om count överskrider antalet element i returneras alla element source isource.

Om count är mindre än eller lika med noll räknas source inte upp och en tom IEnumerable<T> returneras.

Metoderna Take och Skip är funktionella komplement. Givet en samlingssekvens coll och ett heltal nsammanfogar du resultatet av coll.Take(n) och coll.Skip(n) ger samma sekvens som coll.

I Visual Basic frågeuttryckssyntax översätts en Take-sats till ett anrop av Take.

Gäller för

Se även