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
Возвращает цепочку элементов последовательности, удовлетворяющих указанному условию. Индекс элемента используется в логике функции предиката.
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
Методы TakeWhile и SkipWhile являются функциональными дополнениями. При использовании последовательности coll
коллекции и чистой функции p
объединение результатов coll.TakeWhile(p)
и возвращает ту же последовательность, что coll
и coll.SkipWhile(p)
.
В синтаксисе Take While
выражения запроса Visual Basic предложение преобразуется в вызов TakeWhile.
См. также раздел
Применяется к
TakeWhile<TSource>(IEnumerable<TSource>, Func<TSource,Boolean>)
- Исходный код:
- Take.cs
- Исходный код:
- Take.cs
- Исходный код:
- Take.cs
Возвращает цепочку элементов последовательности, удовлетворяющих указанному условию.
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>) для возврата элементов из начала последовательности, если условие выполняется.
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
не содержит больше элементов.
Методы TakeWhile и SkipWhile являются функциональными дополнениями. При использовании последовательности coll
коллекции и чистой функции p
объединение результатов coll.TakeWhile(p)
и возвращает ту же последовательность, что coll
и coll.SkipWhile(p)
.
В синтаксисе Take While
выражения запроса Visual Basic предложение преобразуется в вызов TakeWhile.
См. также раздел
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по