मैं VB.NET में LINQ के साथ काम कर रहा हूँ और कभी कभी मैंवीबी का दमन करने के लिए कैसे
For i = 0 To 10
Dim num = (From n In numbers Where n Mod i = 0 Select n).First()
Next
की तरह एक प्रश्न के लिए मिलता है और फिर इसे चेतावनी आता है "पुनरावृत्ति चर लैम्ब्डा अभिव्यक्ति में उपयोग नहीं किया जाना चाहिए था" "लैम्ब्डा अभिव्यक्ति में पुनरावृत्ति चर का उपयोग करने से अप्रत्याशित परिणाम हो सकते हैं। इसके बजाय, लूप के भीतर एक स्थानीय चर बनाएँ और इसे पुनरावृत्ति चर के मान असाइन करें।"
मुझे पता है कि यह लैम्ब्डा अभिव्यक्ति में पुनरावृत्ति चर का उपयोग करने के लिए एक अच्छा अभ्यास नहीं है, क्योंकि लैम्बडा अभिव्यक्तियों का मूल्यांकन केवल तभी किया जाता है जब आवश्यक हो। (This question इसके बारे में है)
अब मेरा सवाल यह है कि इस चेतावनी को उन मामलों में दबाने के लिए कैसे करें जहां अभिव्यक्ति का मूल्यांकन पहले(), सिंगल(), टोलीस्ट() इत्यादि के निर्माण के साथ किया जाता है (यह है केवल एक चेतावनी है, लेकिन मैं अपने कोड स्वच्छ पसंद है।)
(एक स्थानीय चर घोषणा और यात्रा चर करने के लिए यह एक विकल्प है गुजर, लेकिन मैं एक साफ समाधान के लिए देख रहा हूँ।)
* क्यों * आप कर रहे हैं के लिए एक विस्तृत कड़ी है किसी और चीज को ढूंढ रहे हैं"? –
एक तीन लाइन ब्लॉक में (1.for 2. DoSomething (LinqExpression) 3. अगला) चौथी रेखा 'Dim LocalVar = iterationVar' होना अच्छा नहीं है। लेकिन ऐसा लगता है, यह सबसे अच्छा विकल्प है – jaraics