Giriş
Partitioning metodları diziyi iki veya daha fazla kısma ayırırlar.
Skip
Bazı elemanları atlamamızı sağlar.
Örnek 1
İlk 3 elemanı atlatıp sonraki 5 elemanı almak için şöyle yaparız
Partitioning metodları diziyi iki veya daha fazla kısma ayırırlar.
Skip
Bazı elemanları atlamamızı sağlar.
Örnek 1
İlk 3 elemanı atlatıp sonraki 5 elemanı almak için şöyle yaparız
values.Skip(3).Take(5).Average();
Örnek 2
Elimizde bir dizi olsun
int[] arr = { 2, 4, 3, 9, 1, 0 };
İlk elamanı sona taşıyarak yürümek isteyelim.
{ 4, 3, 9, 1, 0, 2 }
Şöyle yaparız. Mevcut dizi değişmez.
foreach(int i in arr.Skip(1).Concat(arr.Take(1)))
{
...
}
SkipWhile
Örnek yaz
Take
Take belirtilen sayıda elemanı almamızı sağlar. Eğer belirtilen sayıdan daha az eleman varsa bile sorun çıkarmaz. Elimizde şu elemanlar olsun
Şöyle yaparsak{ 1, 2, 3, 4, 5, 6 }
list.Skip(2).Take(5);
İlginç bir soruda hem en baştaki hem de en sondaki 5 elemanı almak istersek bir sefer nasıl yapabileceğimiz sorulmuş. Cevabı index kullanan Where ile süzme yapmak şeklinde verilmiş.
TakeWhile
Elimizde şöyle bir liste olsun.
var list = new List<GiftCard>
{
new GiftCard() {CardNumber = "...", SecurityCode = "...", Balance = 75},
new GiftCard() {CardNumber = "...", SecurityCode = "...", Balance = 85},
new GiftCard() {CardNumber = "...", SecurityCode = "...", Balance = 40},
new GiftCard() {CardNumber = "...", SecurityCode = "..", Balance = 30}
};
Toplam tutar 100'ün altında olduğu sürece listeden eleman çekmek için şöyle yaparız.
var orderTotal = 100;
double current = 0;
var cards = list
.OrderBy(x => x.Balance)
.TakeWhile(card =>
{
bool returnvalue = current < orderTotal;
current += card.Balance;
return returnvalue;
})
.ToList();
Hiç yorum yok:
Yorum Gönder