Операции LINQ, Take, TakeWhile, Skip и SkipWhile

LINQ --- LINQ към обекти --- Операции Take, TakeWhile, Skip и SkipWhile

Разпределянето ви позволява да върнете изходна последователност, която е подмножество на входната последователност.

Операцията Take връща определен брой елементи от входната последователност, започвайки от началото. Операцията Take има един прототип, описан по-долу:

Този прототип указва, че Take приема входна последователност и цяло число, което указва броя на елементите за връщане, и връща обект, който, когато бъде изброен, произвежда първите броени елементи от входната последователност.

Ако стойността на count е по-голяма от броя на елементите във входната последователност, тогава всеки елемент от нея се включва в изходната последователност.

Следва пример за използване на операцията Take:

Този код ще върне първите пет елемента от масива cars. Полученият резултат изглежда така:

Операцията TakeWhile връща елементи от входната последователност, докато някое условие е вярно, започвайки от началото на последователността. Останалите входни елементи се пропускат.

Операцията Take While има два прототипа, описани по-долу:

Първи прототип TakeWhile

Тази операция TakeWhile приема входна последователност и делегат на метод на предикат и връща обект, чието изброяване връща елементи, докато методът на предикат не върне false. Методът на предиката приема елементи един по един от входната последователност и връща индикация дали елементът трябва да бъде включен в изходната последователност или не. Ако е така, обработката на входните елементи продължава. Веднага щом предикатният метод върне false, неследващите входни елементи не се обработват.

Втори прототип TakeWhile

Този прототип е подобен на първия, с изключение на това, че предикатният метод също получава базиран на нула индекс на елемента от входната последователност.

По-долу е даден пример за извикване на първия прототип:

В горния код входните елементи се извличат, стига тяхната дължина да не надвишава 11 знака. Резултатът е показан по-долу:

Елементът, който накара операцията TakeWhile да спре обработката на входната последователност, е Aston Martin. Помислете за пример на втория прототип на операцията TakeWhile:

Кодът в този пример спира да се изпълнява, когато входният елемент е с дължина повече от 11 знака или когато бъде достигнат шестият елемент, което от двете настъпи първо. Ето резултата:

В този случай обработката спира при достигане на шестия елемент.

Операцията Skip пропуска посочения брой елементи от входната последователност, започвайки от нейното начало, и извежда останалите.

Операцията Skip има един прототип, описан по-долу:

Операцията Skip приема входна последователност и цяло число, което указва броя на входните елементи, които трябва да бъдат пропуснати, и връща обект, който, когато бъде изброен, пропуска първите елементи за броене и извежда всички следващи елементи.

Следва пример за извикване на операция Skip:

В този пример първите 5 елемента са пропуснати. Обърнете внимание, че следният изход наистина пропуска първите пет елемента от входната последователност:

takewhile

Операцията SkipWhile обработва входната последователност, като пропуска елементи, докато условието е вярно, и след това извежда останалите в изходната последователност. Операцията SkipWhile има двепрототип, описан по-долу:

Операцията SkipWhile приема входна последователност и делегат на предикатен метод и връща обект, който при изброяване пропуска елементи, докато предикатният метод връща true. Веднага след като предикатният метод върне false, операцията SkipWhile започва да показва всички останали елементи. Методът на предиката взема елементи от входната последователност един по един и връща индикация дали елементът трябва да бъде пропуснат от входната последователност.

Втори прототип SkipWhile

Този прототип е подобен на първия във всичко, с изключение на допълнителен параметър - индексът на елемента от входната последователност, започващ от нула.

Следното е пример за извикване на първия прототип на операцията SkipWhile:

В този пример методът SkipWhile трябва да пропуска елементи, стига да започват с буквата "A". Всички останали елементи се излъчват към изходната последователност. Резултатът от предишната заявка изглежда така:

takewhile

Сега нека да разгледаме пример за използване на втория прототип SkipWhile:

В този пример входните елементи се пропускат, докато не започнат с буквата "A" или докато се достигне десетият елемент. Останалите елементи се излъчват към изходната последователност.

Пропускането на елемент беше прекратено веднага щом се срещна елемент на Nissan, тъй като той започва с N, въпреки че индексът му е 3.