Enumerable.TakeWhile Метод

Определение

Возвращает элементы последовательности, пока они удовлетворяют заданному условию, и затем пропускает оставшиеся элементы.

Перегрузки

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

Возвращает цепочку элементов последовательности, удовлетворяющих указанному условию. Индекс элемента используется в логике функции предиката.

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

Возвращает цепочку элементов последовательности, удовлетворяющих указанному условию.

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

Возвращает цепочку элементов последовательности, удовлетворяющих указанному условию. Индекс элемента используется в логике функции предиката.

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)

Параметры типа

TSource

Тип элементов source.

Параметры

source
IEnumerable<TSource>

Последовательность, из которой требуется возвратить элементы.

predicate
Func<TSource,Int32,Boolean>

Функция, применяемая к каждому исходному элементу для проверки условия; второй параметр функции представляет индекс исходного элемента.

Возвращаемое значение

IEnumerable<TSource>

Объект IEnumerable<T>, содержащий элементы входной последовательности до первого элемента, который не прошел проверку.

Исключения

Параметр source или predicate имеет значение null.

Примеры

В следующем примере кода показано, как использовать для TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) возврата элементов из начала последовательности, если условие, использующее индекс элемента, имеет значение 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

Комментарии

Этот метод реализуется с помощью отложенного выполнения. Немедленное возвращаемое значение — это объект, в который хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется до тех пор, пока объект не будет перечислен либо путем вызова метода GetEnumerator напрямую, либо с помощью foreach Visual C# или For Each в Visual Basic.

Метод TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) проверяет каждый элемент source с помощью predicate и возвращает элемент, если результат равен true. Перечисление останавливается, когда функция предиката возвращается false для элемента или когда source не содержит больше элементов.

Первый аргумент predicate представляет элемент для проверки. Второй аргумент представляет отсчитываемый от нуля индекс элемента внутри source.

SkipWhile Эти TakeWhile методы являются функциональными дополнениями. Учитывая последовательность coll коллекций и чистую функциюp, объединение результатов coll.TakeWhile(p) и получение той же последовательности, что collи coll.SkipWhile(p) .

В Visual Basic синтаксисе Take While выражения запроса предложение преобразуется в вызов TakeWhile.

См. также раздел

Применяется к

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

Возвращает цепочку элементов последовательности, удовлетворяющих указанному условию.

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)

Параметры типа

TSource

Тип элементов source.

Параметры

source
IEnumerable<TSource>

Последовательность, из которой требуется возвратить элементы.

predicate
Func<TSource,Boolean>

Функция для проверки каждого элемента на соответствие условию.

Возвращаемое значение

IEnumerable<TSource>

Объект IEnumerable<T>, содержащий элементы входной последовательности до первого элемента, который не прошел проверку.

Исключения

Параметр source или predicate имеет значение null.

Примеры

В следующем примере кода показано, как использовать для TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) возврата элементов из начала последовательности до тех пор, пока условие имеет значение true.

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

Комментарии

Этот метод реализуется с помощью отложенного выполнения. Немедленное возвращаемое значение — это объект, в который хранятся все сведения, необходимые для выполнения действия. Запрос, представленный этим методом, не выполняется до тех пор, пока объект не будет перечислен либо путем вызова метода GetEnumerator напрямую, либо с помощью foreach Visual C# или For Each в Visual Basic.

Метод TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) проверяет каждый элемент source с помощью predicate и возвращает элемент, если результат равен true. Перечисление останавливается, когда функция предиката возвращается false для элемента или когда source не содержит больше элементов.

SkipWhile Эти TakeWhile методы являются функциональными дополнениями. Учитывая последовательность coll коллекций и чистую функциюp, объединение результатов coll.TakeWhile(p) и получение той же последовательности, что collи coll.SkipWhile(p) .

В Visual Basic синтаксисе Take While выражения запроса предложение преобразуется в вызов TakeWhile.

См. также раздел

Применяется к