Enumerable.TakeWhile Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true, а затем пропускает остальные элементы.
Перегрузки
| Имя | Описание |
|---|---|
| TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>) |
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true. |
| TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>) |
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true. Индекс элемента используется в логике функции предиката. |
TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение 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.
Параметры
- source
- 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 в 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.
См. также раздел
Применяется к
TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Int32,Boolean>)
Возвращает элементы из последовательности до тех пор, пока указанное условие имеет значение true. Индекс элемента используется в логике функции предиката.
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>
Последовательность для возврата элементов из.
Функция для проверки каждого исходного элемента для условия; второй параметр функции представляет индекс исходного элемента.
Возвращаемое значение
Объект 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 в 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.