Enumerable.TakeWhile Enumerable.TakeWhile Enumerable.TakeWhile Enumerable.TakeWhile Method

Определение

Возвращает элементы последовательности, пока заданное условие имеет значение true и затем пропускает оставшиеся элементы.Returns elements from a sequence as long as a specified condition is true, and then skips the remaining elements.

Перегрузки

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

Возвращает элементы последовательности до тех пор, пока заданное условие имеет значение true.Returns elements from a sequence as long as a specified condition is true.

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

Возвращает элементы последовательности до тех пор, пока заданное условие имеет значение true.Returns elements from a sequence as long as a specified condition is true. Индекс элемента используется в логике функции предиката.The element's index is used in the logic of the predicate function.

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

Возвращает элементы последовательности до тех пор, пока заданное условие имеет значение true.Returns elements from a sequence as long as a specified condition is true.

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.The type of the elements of source.

Параметры

source
IEnumerable<TSource>

Последовательность требуется возвратить элементы.A sequence to return elements from.

predicate
Func<TSource,Boolean>

Функция для проверки каждого элемента на соответствие условию.A function to test each element for a condition.

Возвраты

IEnumerable<TSource>

IEnumerable<T> , Содержащий элементы входной последовательности до первого элемента, который больше не прошел проверку.An IEnumerable<T> that contains the elements from the input sequence that occur before the element at which the test no longer passes.

Исключения

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

Примеры

В следующем примере кода демонстрируется использование TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) требуется возвратить элементы в начале последовательности до тех пор, пока условие имеет значение true.The following code example demonstrates how to use TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) to return elements from the start of a sequence as long as a condition is 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
MsgBox(output.ToString())

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

Комментарии

Этот метод реализуется с помощью отложенного выполнения.This method is implemented by using deferred execution. Немедленно возвращаемое значение — это объект, который хранит все сведения, необходимые для выполнения действия.The immediate return value is an object that stores all the information that is required to perform the action. Запрос, представленный этот метод не выполняется до перечисления объекта путем вызова его GetEnumerator метод напрямую или с помощью foreach в Visual C# или For Each в Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) Метод проверяет каждый элемент source с помощью predicate и создает элемент, если результат равен true.The TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) method tests each element of source by using predicate and yields the element if the result is true. Перечисление останавливается, когда предикативная функция возвращает false для элемента или когда source не содержит несколько элементов.Enumeration stops when the predicate function returns false for an element or when source contains no more elements.

TakeWhile И SkipWhile методы являются функциональной дополняет.The TakeWhile and SkipWhile methods are functional complements. Заданной последовательности coll и чистые функции p, объединение результатов coll.TakeWhile(p) и coll.SkipWhile(p) дает той же последовательности, что coll.Given a sequence coll and a pure function p, concatenating the results of coll.TakeWhile(p) and coll.SkipWhile(p) yields the same sequence as coll.

В синтаксисе выражений запросов Visual Basic Take While предложение преобразуется в вызов метода TakeWhile.In Visual Basic query expression syntax, a Take While clause translates to an invocation of TakeWhile.

Дополнительно

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

Возвращает элементы последовательности до тех пор, пока заданное условие имеет значение true.Returns elements from a sequence as long as a specified condition is true. Индекс элемента используется в логике функции предиката.The element's index is used in the logic of the predicate function.

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.The type of the elements of source.

Параметры

source
IEnumerable<TSource>

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

predicate
Func<TSource,Int32,Boolean>

Функция, применяемая к каждому исходному элементу для проверки условия; второй параметр функции представляет индекс исходного элемента.A function to test each source element for a condition; the second parameter of the function represents the index of the source element.

Возвраты

IEnumerable<TSource>

IEnumerable<T> , Содержащий элементы входной последовательности до первого элемента, который больше не прошел проверку.An IEnumerable<T> that contains elements from the input sequence that occur before the element at which the test no longer passes.

Исключения

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

Примеры

В следующем примере кода демонстрируется использование TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) требуется возвратить элементы в начале последовательности до тех пор, пока условие, которое использует индекс этого элемента имеет значение true.The following code example demonstrates how to use TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) to return elements from the start of a sequence as long as a condition that uses the element's index is 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
MsgBox(output.ToString())

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

Комментарии

Этот метод реализуется с помощью отложенного выполнения.This method is implemented by using deferred execution. Немедленно возвращаемое значение — это объект, который хранит все сведения, необходимые для выполнения действия.The immediate return value is an object that stores all the information that is required to perform the action. Запрос, представленный этот метод не выполняется до перечисления объекта путем вызова его GetEnumerator метод напрямую или с помощью foreach в Visual C# или For Each в Visual Basic.The query represented by this method is not executed until the object is enumerated either by calling its GetEnumerator method directly or by using foreach in Visual C# or For Each in Visual Basic.

TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) Метод проверяет каждый элемент source с помощью predicate и создает элемент, если результат равен true.The TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) method tests each element of source by using predicate and yields the element if the result is true. Перечисление останавливается, когда предикативная функция возвращает false для элемента или когда source не содержит несколько элементов.Enumeration stops when the predicate function returns false for an element or when source contains no more elements.

Первый аргумент predicate представляет элемент для проверки.The first argument of predicate represents the element to test. Второй аргумент представляет отсчитываемый от нуля индекс элемента в рамках source.The second argument represents the zero-based index of the element within source.

TakeWhile И SkipWhile методы являются функциональной дополняет.The TakeWhile and SkipWhile methods are functional complements. Заданной последовательности coll и чистые функции p, объединение результатов coll.TakeWhile(p) и coll.SkipWhile(p) дает той же последовательности, что coll.Given a sequence coll and a pure function p, concatenating the results of coll.TakeWhile(p) and coll.SkipWhile(p) yields the same sequence as coll.

В синтаксисе выражений запросов Visual Basic Take While предложение преобразуется в вызов метода TakeWhile.In Visual Basic query expression syntax, a Take While clause translates to an invocation of TakeWhile.

Дополнительно

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