मुझे एहसास है कि यह आंशिक रूप से व्यक्तिपरक है, लेकिन मैं आम तौर पर समुदाय की राय के रूप में उत्सुक हूं और इस मुद्दे को हल करने वाले मौजूदा प्रश्न को सफलतापूर्वक ढूंढने में सक्षम नहीं हूं।एक विस्तार विधि में एक लैम्ब्डा कब करता है?
मैं एल 2 ईएफ क्वेरी में एक विशेष चयन कथन के बारे में एक साथी सहकर्मी के साथ कुछ हद तक धार्मिक बहस में हूं।
.Select(r =>
{
r.foo.Bar = r.bar;
r.foo.Bar.BarType = r.Alpha;
if (r.barAddress != null)
{
r.foo.Bar.Address = r.barAddress;
r.foo.Bar.Address.State = r.BarState;
}
if (r.baz != null)
{
r.foo.Bar.Baz = r.baz;
if (r.bazAddress != null)
{
r.foo.Bar.Baz.Address = r.bazAddress;
r.foo.Bar.Baz.Address.State = r.BazState;
}
}
return r.foo;
})
चेतावनियां:
- यह वह जगह है Linq करने वाली संस्थाओं
- यह डीबी में काम करने के बाद के रूप में प्रदर्शन किया गया और
- लौटे इनपुट पैरामीटर
r
अनाम है
व्यक्तिगत रूप से, मैं राय के बारे में हूं (ए) चयन खंड को मूल्यों में बदलाव नहीं करना चाहिए, इसे केवल प्रोजेक्ट करना चाहिए। उनका काउंटर तर्क यह है कि वह कुछ भी नहीं बदल रहा है, वह सिर्फ यह सुनिश्चित कर रहा है कि डीबी क्वेरी के परिणामस्वरूप सब ठीक से शुरू हो गया है। दूसरा, मुझे लगता है कि एक बार जब वह पूर्ण कोड ब्लॉक और वापसी विवरणों में प्रवेश करना शुरू कर देता है, तो यह एक विधि या Func<T, U>
को परिभाषित करने का समय है और इन सभी इनलाइनों को नहीं करता है। यहां पर शिकायतकर्ता, फिर से, इनपुट अज्ञात है, इसलिए एक प्रकार को परिभाषित करने की आवश्यकता होगी। लेकिन फिर भी, अगर हम विशिष्ट नहीं हैं तो भी हम सामान्य बिंदु पर बहस कर रहे हैं।
तो, लैम्ब्डा अभिव्यक्ति कब बहुत अधिक होती है? आप रेत में अस्पष्ट रेखा कहां खींचते हैं?
ऐसा लगता है कि कोड की जटिलता अज्ञात प्रकार की जटिलता का पालन करती है; वास्तव में एक जटिल अज्ञात प्रकार वास्तव में आवश्यक है? –
@Dan, वास्तविक क्वेरी में 8 अलग-अलग इकाइयों में जाने के बाएं शामिल हैं, अज्ञात प्रकार के साथ केवल उन इकाइयों की वस्तुओं को शामिल किया गया है। यह एक जटिल अज्ञात प्रकार नहीं है, प्रति से, यह केवल अपरिभाषित है। यह 'नया चुनें {foo, bar, baz,/* आदि * /} ' –
यह स्पष्ट रूप से साइड इफेक्ट्स के साथ एक चयन है। काफी इरादा नहीं है। इसके लिए, 'foreach(); 'है। – Dykam