आप (चेनेबल, लेकिन आलसी मूल्यांकन) का उपयोग कर सकते हैं Select
, पहले अपना ऑपरेशन कर रहे हैं, और फिर पहचान वापस कर रहे हैं (या आपके द्वारा कुछ और)
IEnumerable<string> people = new List<string>(){"alica", "bob", "john", "pete"};
people.Select(p => { Console.WriteLine(p); return p; });
आपको यह सुनिश्चित करने की आवश्यकता होगी कि यह अभी भी मूल्यांकन किया गया है, या तो Count()
(सबसे सस्ता ऑपरेशन एन्यूमरेट करने के लिए) या किसी अन्य ऑपरेशन की वैसे भी आपको आवश्यकता है।
मैं इसे मानक पुस्तकालय में लाया देखना पसंद करूंगा, हालांकि:
static IEnumerable<T> WithLazySideEffect(this IEnumerable<T> src, Action<T> action) {
return src.Select(i => { action(i); return i; } );
}
उपरोक्त कोड तब people.WithLazySideEffect(p => Console.WriteLine(p))
प्रभावी हो जाता है जो प्रभावी रूप से फॉर्च के बराबर होता है, लेकिन आलसी और चेन योग्य।