2010-03-25 10 views
6

मैं कैसे ObservableCollection < टी> पर एक foreach लैम्ब्डा अभिव्यक्ति पर अमल करते हैं?मैं कैसे ObservableCollection <T> पर एक foreach लैम्ब्डा अभिव्यक्ति पर अमल करते हैं?

वहाँ ObservableCollection < टी के साथ foreach की विधि> हालांकि इस पद्धति सूची < टी> के साथ मौजूद नहीं है।

वहाँ किसी भी विस्तार विधि उपलब्ध है?

उत्तर

12

बीसीएल में कोई विधि डिफ़ॉल्ट रूप से उपलब्ध नहीं है, लेकिन यह सीधे आगे एक विस्तार विधि है जो समान व्यवहार (तर्क संक्षिप्तता के लिए छोड़े गए जाँच)

public static void ForEach<T>(this IEnumerable<T> enumerable, Action<T> action) { 
    foreach (var cur in enumerable) { 
    action(cur); 
    } 
} 

उपयोग मामला है लिखने के लिए है

ObservableCollection<Student> col = ...; 
col.ForEach(x => Console.WriteLine(x.Name)); 
+0

आपके त्वरित उत्तर के लिए धन्यवाद, यह बहुत अच्छा काम कर रहा है। लेकिन मैं एक बात पता है कि कैसे विधेय एक कार्रवाई के रूप में काम कर रहा है चाहते हैं? अनुमानित: x => कंसोल। राइटलाइन (x.Name) –

+0

इससे पहले मैं इस तरह का उपयोग कर रहा था, स्थिति। टोलिस्ट()। ForEach (x => x.IsHidden = true); और मुझे लगता है कि यह सिर्फ स्मृति लेने वाली थी। –

4
public static class EnumerableExtensions 
{ 
    public static void ForEach<T>(this IEnumerable<T> enumerable, Action<T> action) 
    { 
     foreach (var e in enumerable) 
     { 
      action(e); 
     } 
    } 
} 
0
observableCollection.ToList().ForEach(item => /* do something */); 
संबंधित मुद्दे