मैं एमवीसी पर एक पुस्तक से कुछ LINQ उदाहरणों के माध्यम से जा रहा हूं और मुझे आश्चर्य है कि नीचे दिए गए चयन कॉल का उद्देश्य क्या हो सकता है। शायद यह एक टाइपो है लेकिन मुझे पुस्तक की इरेटा में इसका कोई उल्लेख नहीं दिख रहा है।LINQ का संभावित उद्देश्य (x => x)
foreach(Product p in products
.Where(e => e.Name == productParam.Name)
.Select(e => e)) {
p.Price = productParam.Price;
}
मैं इस जहां .Select (ई => ई) शामिल किया गया था और एक जहाँ यह नहीं था के दो उदाहरण बाहर का परीक्षण किया और कोड एक ही है। चूंकि भविष्यवाणी द्वारा अनुमानित आईन्यूमेरेबल कहां लौटाता है, तब चयन कॉल (उपरोक्त विशिष्ट भविष्यवाणी के साथ) कब आवश्यक होगा? क्या यह वास्तव में कुछ भी करता है? क्या यह कुछ अजीब कोने मामले में हो सकता है?
केवल एक चीज जिसे मैं सोच सकता हूं वह है यदि आपने सामान्य तर्कों को स्पष्ट रूप से परिभाषित किया है और वापसी मूल्य स्रोत से एक पूर्ण रूप से परिवर्तनीय मूल्य था। आप डिबगिंग के लिए ब्रेकपॉइंट्स को भी शामिल कर सकते हैं (शायद आपको घुंघराले ब्रेसिज़ और उस के लिए एक नई लाइन की आवश्यकता होगी)। लेकिन उन लोगों के अलावा (विशेष रूप से जिनमें से कोई भी आपके द्वारा पोस्ट किए गए कोड में वास्तव में नहीं होता है), मैं इसके लिए किसी भी सार्थक उद्देश्य के बारे में नहीं सोच सकता। शायद लिंक क्वेरी वाक्यविन्यास से आलसी रूपांतरण? –
यह वास्तव में एक आम गलती है। सब कुछ पर ToList slapping भी अधिक आम है। आम तौर पर लोग LINQ प्रश्नों के निष्पादन मॉडल को पूरी तरह समझ नहीं पाते हैं (जो समझ में आता है)। – usr
@usr मेरी इच्छा है कि वहां एक (मानक) 'फोर्स' एक्सटेंशन था .. कई बार ऐसे होते हैं जब IQuerable/IEnumerable का मूल्यांकन मजबूर होना चाहिए, भले ही आप वास्तव में किसी सूची में रुचि न लें। नाम वांछित ऑपरेशन के रूप में इसे और अधिक स्पष्ट कर देगा। –