मैं अपने सिर को लपेटने की कोशिश कर रहा हूं कि सी # कंपाइलर क्या करता है जब मैं linq विधियों को चेन कर रहा हूं, खासकर जब एक ही विधि को कई बार चेन करना।सी # कंपाइलर चेनिंग linq विधियों के साथ कैसे व्यवहार करता है
सरल उदाहरण: मान लें कि मैं दो स्थितियों के आधार पर इनट्स के अनुक्रम को फ़िल्टर करने की कोशिश कर रहा हूं।
सबसे स्पष्ट बात करने के लिए कुछ इस तरह है:
IEnumerable<int> Method1(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0 && i % 5 == 0);
}
लेकिन हम भी प्रत्येक में एक भी शर्त के साथ जहां तरीकों श्रृंखला सकता है,:
IEnumerable<int> Method2(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0).Where(i => i % 5 == 0);
}
मैं एक था प्रतिबिंब में आईएल देखें; यह स्पष्ट रूप से दो विधियों के लिए अलग अलग है, लेकिन यह आगे का विश्लेषण पल :)
मैं पता लगाने के लिए चाहते हैं पर अपने ज्ञान से परे है:
क) क्या संकलक प्रत्येक उदाहरण में अलग ढंग से करता है, और क्यों।
ख) किसी भी प्रदर्शन निहितार्थ देखते हैं (माइक्रो-अनुकूलन की कोशिश नहीं;! बस जिज्ञासु)
अच्छा जवाब। हमें स्टैक ओवरफ्लो पर इस तरह की अधिक सामग्री चाहिए। –