Была ли эта страница полезной?
Ваш отзыв об этом контенте важен для нас. Расскажите нам о том, что вы думаете.
Дополнительный отзыв?
1500 символов осталось
TakeWhile(TSource) - метод (IEnumerable(TSource), Func(TSource, Int32, Boolean))
Данная статья переведена автоматически. Наведите указатель мыши на предложения статьи, чтобы просмотреть исходный текст. Дополнительные сведения.
Перевод
Текст оригинала

Enumerable.TakeWhile<TSource> - метод (IEnumerable<TSource>, Func<TSource, Int32, Boolean>)

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

Пространство имен:  System.Linq
Сборка:  System.Core (в System.Core.dll)

public static IEnumerable<TSource> TakeWhile<TSource>(
	this IEnumerable<TSource> source,
	Func<TSource, int, bool> predicate
)

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

TSource

Тип элементов последовательности source.

Параметры

source
Тип: System.Collections.Generic.IEnumerable<TSource>
Последовательность, из которой требуется возвратить элементы.
predicate
Тип: System.Func<TSource, Int32, Boolean>
Функция, применяемая к каждому исходному элементу для проверки условия; второй параметр функции представляет индекс исходного элемента.

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

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

Примечание об использовании

В Visual Basic и C# этот метод можно вызывать как метод экземпляра для любого объекта типа IEnumerable<TSource>. При вызове метода для экземпляра следует опускать первый параметр. Дополнительные сведения см. в разделе Методы расширения (Visual Basic) или Методы расширения (Руководство по программированию в C#).

ИсключениеУсловие
ArgumentNullException

Значение параметра source или predicatenull.

Данный метод реализуется с использованием отложенного выполнения. Немедленно возвращаемое значение — это объект, в котором хранится вся информация, необходимая для выполнения операции. Запрос, представленный данным методом, не выполняется до тех пор, пока не будет произведено перечисление объекта путем непосредственного вызова его метода GetEnumerator или с помощью оператора foreach в Visual 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.SkipWhile(p) даст последовательность, совпадающую с coll.

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

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


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



.NET Framework

Поддерживается в версиях: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework (клиентский профиль)

Поддерживается в версиях: 4, 3.5 с пакетом обновления 1 (SP1)

Переносимая библиотека классов

Поддерживается в версии: Переносимая библиотека классов

Приложения .NET для Магазина Windows

Поддерживается в версии: Windows 8

Приложения .NET для Windows Phone

Поддерживается в версиях: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows Server 2008 (роль основных серверных компонентов не поддерживается), Windows Server 2008 R2 (роль основных серверных компонентов поддерживается в пакете обновления 1 (SP1) или выше; системы на базе Itanium не поддерживаются)

.NET Framework поддерживает не все версии каждой платформы. Поддерживаемые версии перечислены в разделе Требования к системе для .NET Framework.

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2015 Microsoft