मैं थोड़ा निम्नलिखित कोड है, जहां मैं बस ints के अनुक्रम से सभी 3s निकालना चाहते हैं उसके परिणाम से आश्चर्यचकित हूं:LINQ - छोड़ दिया गया है जबकि टूटा हुआ?
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.SkipWhile(i => i == 3); // Oh noes! Returns { 1, 1, 2, 3 }
3 क्यों छोड़ी नहीं है?
मेरा अगला सोचा था, ठीक है, ऑपरेटर को छोड़कर चाल करना होगा:
var sequence = new [] { 1, 1, 2, 3 };
var result = sequence.Except(i => i == 3); // Oh noes! Returns { 1, 2 }
सारांश में,
- 3 को हटा छोड़कर, लेकिन यह भी गैर विशिष्ट तत्वों को हटा। Grr।
- SkipWhile पिछले तत्व को छोड़ नहीं देता है, भले ही यह स्थिति से मेल खाता हो। Grr।
क्या कोई यह समझा सकता है कि SkipWhile अंतिम तत्व को क्यों नहीं छोड़ता है? और क्या कोई सुझाव दे सकता है कि ऊपर दिए गए अनुक्रम से '3' को हटाने के लिए मैं LINQ ऑपरेटर का उपयोग किस प्रकार कर सकता हूं?
इसे SkipWhile (true) के रूप में सोचें। इसलिए, आपकी पहली हालत (i == 3) विफल हो जाती है। तो, यह SkipWhile (झूठा) बन जाता है और तो आगे क्या होता है? यह हर तत्व शेष देता है! –