पारित किए गए अनुक्रम का क्रम पूरी तरह से महत्वपूर्ण है TakeWhile
, जो कि जल्द से जल्द एक समर्पित रिटर्न के रूप में समाप्त हो जाएगाfalse
, जबकि Where
पहले false
मूल्य से परे अनुक्रम का मूल्यांकन करना जारी रखेगा ।
के लिए एक आम उपयोग TakeWhile
बड़े, महंगे, या यहां तक कि अनंत enumerables के आलसी मूल्यांकन के दौरान होता है जहां आपको अनुक्रम के आदेश के बारे में अतिरिक्त ज्ञान हो सकता है।
उदाहरण दिए गए अनुक्रम:
IEnumerable<BigInteger> InfiniteSequence()
{
BigInteger sequence = 0;
while (true)
{
yield return sequence++;
}
}
ए के .Where
परिणामस्वरूप एक अनंत लूप होगा जो कि गणना करने योग्य भाग का मूल्यांकन करने की कोशिश करेगा:
var result = InfiniteSequence()
.Where(n => n < 100)
.Count();
जबकि .TakeWhile
, एक और ज्ञान है कि enumerables आरोही है के साथ सशस्त्र, आंशिक अनुक्रम का मूल्यांकन करने की अनुमति देगा:
var result = InfiniteSequence()
.TakeWhile(n => n < 100)
.Count();