जब एक से अधिक के साथ एक LINQ क्वेरी "और" की स्थिति लेखन, मैं &&
या एकाधिक where
खंड, प्रत्येक conditon के लिए एक वाली एकल where
खंड लिखना चाहिए?क्या मुझे अपने LINQ क्वेरी में दो "कहां" खंड या "&&" का उपयोग करना चाहिए?
static void Main(string[] args)
{
var ints = new List<int>(Enumerable.Range(-10, 20));
var positiveEvensA = from i in ints
where (i > 0) && ((i % 2) == 0)
select i;
var positiveEvensB = from i in ints
where i > 0
where (i % 2) == 0
select i;
System.Diagnostics.Debug.Assert(positiveEvensA.Count() ==
positiveEvensB.Count());
}
वहाँ कोई अंतर positiveEvensA और positiveEvensB के बीच व्यक्तिगत पसंद या कोडिंग शैली (लंबी लाइनों, पठनीयता, आदि) के अलावा अन्य है?
दिमाग में आने वाला एक संभावित अंतर यह है कि विभिन्न LINQ प्रदाता अधिक जटिल अभिव्यक्ति के बजाय कई where
एस के साथ बेहतर ढंग से सामना करने में सक्षम हो सकते हैं; क्या ये सच है?
"कहाँ" खंड, कि अभी तक केवल प्रति मद 2 प्रतिनिधि कॉल के साथ एक एकल पुनरावृत्ति है। –
मार्क, जब मैं दो पुनरावृत्तियों कहता हूं, तो मुझे और अधिक स्पष्ट होना चाहिए था। 2 खंडों के साथ, आप दो अलग-अलग गणक बनाते हैं - पहला जहां एक गणक बनाता है जिसे दूसरे द्वारा गणना की जाती है। लेकिन यह बहुत मामूली है-यह 2 लूप नहीं कर रहा है, बस अलग एन्युमरेटर्स के साथ गिनती है। –
मुझे लगता है कि जहां कहां है, वहां कई कहां के लिए कुछ विशेष अनुकूलन हैं। फिर भी यह कई प्रतिनिधि आमंत्रणों के कारण धीमा हो जाएगा। – CodesInChaos