English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Операторы разделения разбивают последовательность (множество) на две части и возвращают одну из них.
Метод | Описание |
---|---|
Skip | Начинать с первого элемента последовательности и прыгать до указанного положения. |
SkipWhile | Пропуск элементов по условиям до тех пор, пока элементы не будут соответствовать условиям. Если первый элемент сам не соответствует условиям, то он пропустит 0 элементов и вернёт все элементы последовательности. |
Take | Начинать с первого элемента последовательности и перемещать элементы до указанного положения. |
TakeWhile | Возврат элементов из первого элемента до тех пор, пока элементы не будут соответствовать условиям. Если первый элемент сам не соответствует условиям, то возвращается пустой набор. |
Метод Skip() пропускает указанное количество элементов от первого элемента и возвращает оставшиеся элементы.
IList<string> strList = new List<string>{ "One", "Two", "Three", "Four", "Five" }; var newList = strList.Skip(2); foreach (var str in newList) Console.WriteLine(str);
Третий Четвертый Пятый
Синтаксис запроса C# не поддерживает операторы Skip & SkipWhile. Однако вы можете использовать методы Skip/SkipWhile для переменных запроса или 包装ить весь запрос в скобки, а затем вызвать Skip/SkipWhile.
Следующий пример демонстрирует оператор skip в синтаксисе запроса - версия VB.NET
Dim skipResult = From s In studentList Skip 3 Выберите s
Как следует из названия, расширяемый метод SkipWhile() в LINQ пропускает элементы в集合е до тех пор, пока условие не станет true. Как только любое из условий элементов станет false, он возвращает новый набор всех оставшихся элементов.
Метод SkipWhile() имеет два overload-а. Один принимает предикат типа Func<TSource, bool>, а другой overload принимает предикат типа Func<TSource, int, bool> через индекс элемента.
В следующем примере метод SkipWhile() пропускает все элементы до тех пор, пока не найдет строку с длиной, равной или больше 4 символов.
Пример: метод SkipWhile() в C# пропускает элементы с длиной меньше 4 и возвращает все следующие элементы
IList<string> strList = new List<string>() { "Один" "Два" "Третий" "Четвертый" "Пятый" "Шестой" var resultList = strList.SkipWhile(s => s.Length < 4); foreach(string str in resultList) Console.WriteLine(str);
Третий Четвертый Пятый Шестой
В предыдущем примере, так как длина первых двух элементов меньше 3, поэтому SkipWhile () пропускает первые два элемента и находит третий элемент с длиной, равной или больше 4. Как только находит элемент с длиной, равной или больше 4 символов, он не пропускает другие элементы, даже если они меньше 4 символов.
Теперь, посмотрите на следующий пример, в котором SkipWhile () не пропускает هیچ элемента, потому что условие первого элемента равно false.
IList<string> strList = new List<string>() { "Третий" "Один" "Два" "Четвертый" "Пятый" "Шестой" var resultList = strList.SkipWhile(s => s.Length < 4); foreach(string str in resultList) Console.WriteLine(str);
Третий Один Два Четвертый Пятый Шестой
Второй параметр overload SkipWhile передаёт индекс каждого элемента. Вот пример
IList<string> strList = new List<string>() { "Один" "Два" "Третий" "Четвертый" "Пятый" "Шестой" var result = strList.SkipWhile((s, i) => s.Length > i); foreach(string str in result) Console.WriteLine(str);
Пятый Шестой
В примере выше лямбда-выражение включает элемент и индекс элемента в качестве параметров. Оно пропускает все элементы, пока длина строки-элемента больше, чем индекс.
Синтаксис запросов C# не поддерживает операторы Skip & SkipWhile. Однако, вы можете использовать методы Skip/SkipWhile для переменных запроса или 包装 весь запрос в скобки и затем вызывать Skip/SkipWhile ().
Dim strList = New List(Of string) From { "Один" "Два" "Третий" "Четвертый" "Пятый" "Шестой" Dim skipWhileResult = From s In studentList Пропустите While s.Length < 4 Выберите s
Третий Четвертый Пятый Шестой