Прочитать на английском

Поделиться через


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>)

Исходный код:
Take.cs
Исходный код:
Take.cs
Исходный код:
Take.cs

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

C#
public static System.Collections.Generic.IEnumerable<TSource> TakeWhile<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,int,bool> predicate);

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

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.

C#
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
*/

Комментарии

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

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
Take.cs
Исходный код:
Take.cs
Исходный код:
Take.cs

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

C#
public static System.Collections.Generic.IEnumerable<TSource> TakeWhile<TSource> (this System.Collections.Generic.IEnumerable<TSource> source, Func<TSource,bool> predicate);

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

TSource

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

Параметры

source
IEnumerable<TSource>

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

predicate
Func<TSource,Boolean>

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

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

IEnumerable<TSource>

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

Исключения

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

Примеры

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

C#
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
*/

Комментарии

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0