Urutan urutan yang dilewati sangat penting dengan TakeWhile
, yang akan berakhir segera setelah predikat kembali false
, sedangkan Where
akan terus mengevaluasi urutan di luar nilai pertama false
.
Penggunaan umum untuk TakeWhile
adalah selama evaluasi malas dari enumerable besar, mahal, atau bahkan tak terbatas di mana Anda mungkin memiliki pengetahuan tambahan tentang pengurutan urutan.
misalnya Diberikan urutannya:
IEnumerable<BigInteger> InfiniteSequence()
{
BigInteger sequence = 0;
while (true)
{
yield return sequence++;
}
}
A .Where
akan menghasilkan pengulangan tak terbatas yang mencoba mengevaluasi bagian dari enumerable:
var result = InfiniteSequence()
.Where(n => n < 100)
.Count();
Sedangkan a .TakeWhile
, dan berbekal pengetahuan bahwa enumerables sedang menanjak, akan memungkinkan untuk mengevaluasi urutan parsial:
var result = InfiniteSequence()
.TakeWhile(n => n < 100)
.Count();