2011-04-12 11 views
9

क्या LINQ (.Select)) में लैम्ब्डा अभिव्यक्ति के साथ foreach लूप को प्रतिस्थापित करना संभव है?LINQ साइड इफेक्ट्स

List<int> l = {1, 2, 3, 4, 5}; 
foreach (int i in l) 
    Console.WriteLine(i); 

करने के लिए:

List<int> l = {1, 2, 3, 4, 5}; 
l.Select(/* print to console */); 

उत्तर

11

फोरैच के बराबर कोई लिंक समकक्ष नहीं है, हालांकि यह स्वयं को लागू करना काफी आसान है।

एरिक लिपर्ट एक अच्छा वर्णन here देता है कि यह लिंक में ही क्यों लागू नहीं किया गया था।

हालांकि, अगर अपने संग्रह एक सूची (जो इसे अपने उदाहरण में प्रतीत होता है) है, तो आप List.ForEach उपयोग कर सकते हैं:

myList.ForEach(item => Console.WriteLine(item)); 
+0

मैंने अभी linq श्रृंखला के अंत में '.TLList() 'जोड़ा, और फिर' .EEach (Console.WriteLine) ' –

2

आप List<T>.ForEach विधि का उपयोग कर सकते हैं।

l.ForEach(i => Console.WriteLine(i)); 
1

List.ForEach कार्रवाई प्रतिनिधि का उपयोग करता है। इसके बाद से सही विकल्प होगा।

4

किसी भी IEnumerable के लिए, आप कर सकते हैं:

items.Any(item => 
{ 
    Console.WriteLine(item); 
    return false; 
} 

लेकिन यह पूरी तरह से गलत होगा! यह नाखून हथौड़ा करने के लिए जूते का उपयोग करने जैसा है। अर्थात्, यह समझ में नहीं आता है।

संबंधित मुद्दे