Bagikan melalui


Enumerable.TakeWhile Metode

Definisi

Mengembalikan elemen dari urutan selama kondisi yang ditentukan benar, lalu melompati elemen yang tersisa.

Overload

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

Mengembalikan elemen dari urutan selama kondisi yang ditentukan benar. Indeks elemen digunakan dalam logika fungsi predikat.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Mengembalikan elemen dari urutan selama kondisi yang ditentukan benar.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)

Sumber:
Take.cs
Sumber:
Take.cs
Sumber:
Take.cs

Mengembalikan elemen dari urutan selama kondisi yang ditentukan benar. Indeks elemen digunakan dalam logika fungsi predikat.

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

Jenis parameter

TSource

Jenis elemen source.

Parameter

source
IEnumerable<TSource>

Urutan untuk mengembalikan elemen dari.

predicate
Func<TSource,Int32,Boolean>

Fungsi untuk menguji setiap elemen sumber untuk suatu kondisi; parameter kedua fungsi mewakili indeks elemen sumber.

Mengembalikan

IEnumerable<TSource>

Yang IEnumerable<T> berisi elemen dari urutan input yang terjadi sebelum elemen di mana pengujian tidak lagi lulus.

Pengecualian

source atau predicate adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) untuk mengembalikan elemen dari awal urutan selama kondisi yang menggunakan indeks elemen adalah true.

string[] fruits = { "apple", "passionfruit", "banana", "mango",
                      "orange", "blueberry", "grape", "strawberry" };

IEnumerable<string> query =
    fruits.TakeWhile((fruit, index) => fruit.Length >= index);

foreach (string fruit in query)
{
    Console.WriteLine(fruit);
}

/*
 This code produces the following output:

 apple
 passionfruit
 banana
 mango
 orange
 blueberry
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "passionfruit", "banana", "mango",
 "orange", "blueberry", "grape", "strawberry"}

' Take strings from the array until one
' of the string's lengths is greater than or
' equal to the string item's index in the array.
Dim query As IEnumerable(Of String) =
fruits.TakeWhile(Function(fruit, index) _
                     fruit.Length >= index)

' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' apple
' passionfruit
' banana
' mango
' orange
' blueberry

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator secara langsung atau dengan menggunakan foreach di C# atau For Each di Visual Basic.

Metode ini TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) menguji setiap elemen dengan source menggunakan predicate dan menghasilkan elemen jika hasilnya adalah true. Enumerasi berhenti ketika fungsi predikat kembali false untuk elemen atau ketika source tidak berisi lebih banyak elemen.

Argumen pertama mewakili predicate elemen yang akan diuji. Argumen kedua mewakili indeks berbasis nol dari elemen dalam source.

Metode TakeWhile dan SkipWhile adalah pelengkap fungsi. Mengingat urutan coll koleksi dan fungsi pmurni , menggabungkan hasil coll.TakeWhile(p) dan coll.SkipWhile(p) menghasilkan urutan yang sama dengan coll.

Dalam sintaks ekspresi kueri Visual Basic, Take While klausa diterjemahkan ke pemanggilan TakeWhile.

Lihat juga

Berlaku untuk

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)

Sumber:
Take.cs
Sumber:
Take.cs
Sumber:
Take.cs

Mengembalikan elemen dari urutan selama kondisi yang ditentukan benar.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<TSource> ^ TakeWhile(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TSource, bool> ^ predicate);
public static System.Collections.Generic.IEnumerable<TSource> TakeWhile<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);
static member TakeWhile : seq<'Source> * Func<'Source, bool> -> seq<'Source>
<Extension()>
Public Function TakeWhile(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As IEnumerable(Of TSource)

Jenis parameter

TSource

Jenis elemen source.

Parameter

source
IEnumerable<TSource>

Urutan untuk mengembalikan elemen dari.

predicate
Func<TSource,Boolean>

Fungsi untuk menguji setiap elemen untuk suatu kondisi.

Mengembalikan

IEnumerable<TSource>

IEnumerable<T> yang berisi elemen dari urutan input yang terjadi sebelum elemen di mana pengujian tidak lagi lulus.

Pengecualian

source atau predicate adalah null.

Contoh

Contoh kode berikut menunjukkan cara menggunakan TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) untuk mengembalikan elemen dari awal urutan selama kondisi benar.

string[] fruits = { "apple", "banana", "mango", "orange",
                      "passionfruit", "grape" };

IEnumerable<string> query =
    fruits.TakeWhile(fruit => String.Compare("orange", fruit, true) != 0);

foreach (string fruit in query)
{
    Console.WriteLine(fruit);
}

/*
 This code produces the following output:

 apple
 banana
 mango
*/
' Create an array of strings.
Dim fruits() As String =
{"apple", "banana", "mango", "orange", "passionfruit", "grape"}

' Take strings from the array until one of
' the strings matches "orange".
Dim query As IEnumerable(Of String) =
fruits.TakeWhile(Function(fruit) _
                     String.Compare("orange", fruit, True) <> 0)

' Display the results.
Dim output As New System.Text.StringBuilder
For Each fruit As String In query
    output.AppendLine(fruit)
Next
Console.WriteLine(output.ToString())

' This code produces the following output:
'
' apple
' banana
' mango

Keterangan

Metode ini diimplementasikan dengan menggunakan eksekusi yang ditangguhkan. Nilai pengembalian langsung adalah objek yang menyimpan semua informasi yang diperlukan untuk melakukan tindakan. Kueri yang diwakili oleh metode ini tidak dijalankan sampai objek dijumlahkan baik dengan memanggil metodenya GetEnumerator secara langsung atau dengan menggunakan foreach di C# atau For Each di Visual Basic.

Metode ini TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) menguji setiap elemen dengan source menggunakan predicate dan menghasilkan elemen jika hasilnya adalah true. Enumerasi berhenti ketika fungsi predikat kembali false untuk elemen atau ketika source tidak berisi lebih banyak elemen.

Metode TakeWhile dan SkipWhile adalah pelengkap fungsi. Mengingat urutan coll koleksi dan fungsi pmurni , menggabungkan hasil coll.TakeWhile(p) dan coll.SkipWhile(p) menghasilkan urutan yang sama dengan coll.

Dalam sintaks ekspresi kueri Visual Basic, Take While klausa diterjemahkan ke pemanggilan TakeWhile.

Lihat juga

Berlaku untuk