Skip ja Take

Skip:llä jätetään tietty määrä elementtejä väliin ja Take:lla otetaan tietty määrä.

Jos meillä on lista tuotteita ja ne halutaan näyttää useammalla sivulla, voidaan esim. sivulla 3 olevat tuotteet poimia seuraavasti

IEnumerable<Tuote> tuotteet = HaeTuotteet();

int sivunumero = 3;
int sivunKoko = 10;

// jätetään välistä 20, poimitaan 10
// eli tuotteet 21 - 30
IEnumerable<Tuote> sivunTuotteet = tuotteet.Skip((sivunumero - 1) * sivunKoko).Take(sivunKoko);

SkipWhile ja TakeWhile

SkipWhile:lla jätetään elementtejä välistä kunnes annettu ehto täyttyy. Vastaavasti TakeWhile:lla otetaan elementtejä siihen asti kunnes ehto täyttyy.

Esimerkiksi otetaan numerot ensimmäisestä parittomasta alkaen

IEnumerable<int> numerot = new[] { 8, 2, 9, 1, 4, 6, 7, 3, 4 };
IEnumerable<int> ekanParittomanJalkeen = numerot.SkipWhile(n => n % 2 == 0); // 9,1,4,6,7,3,4