Aktarılan dizinin sırası kesinlikle kritiktir ve TakeWhile
bir yüklem geri döner dönmez sona erer false
, oysa Where
diziyi ilk false
değerin ötesinde değerlendirmeye devam eder .
TakeWhile
Sıranın sıralaması hakkında ek bilgiye sahip olabileceğiniz büyük, pahalı ve hatta sonsuz numaralandırmaların tembel değerlendirmesi sırasında yaygın olarak kullanılır .
Örneğin, sıra verildiğinde:
IEnumerable<BigInteger> InfiniteSequence()
{
BigInteger sequence = 0;
while (true)
{
yield return sequence++;
}
}
A .Where
, numaralandırılabilirin bir bölümünü değerlendirmeye çalışan sonsuz bir döngü ile sonuçlanır:
var result = InfiniteSequence()
.Where(n => n < 100)
.Count();
Oysa .TakeWhile
ve numaralandırılanların yükselmekte olduğu bilgisine sahip olan a, kısmi dizinin değerlendirilmesine izin verir:
var result = InfiniteSequence()
.TakeWhile(n => n < 100)
.Count();