एरिक तथ्य सूची < टी> के लिए एक foreach है कि वहाँ के अलावा एक सम्मोहक तर्क बनाता है लेकिन केवल सूची < टी> के लिए। मैंने उस बहुत उपयोगी विस्तार विधि का उपयोग करने के लिए कई अवसरों को झुका दिया है और आईनेमेरेबल < टी> के लिए सामान्य एक्सटेंशन विधि की कमी से समान रूप से निराश हो गया है, इसलिए मैंने अंत में अपना खुद का लिखने का फैसला किया।
करने में ऐसा है, तो मैं एक कदम आगे जा रहा है और एक बार जब < टी> और ForEvery < टी> धाराप्रवाह विस्तार तरीकों कि प्रत्येक आइटम और उस श्रृंखला में एक कार्रवाई के निष्पादन सिर्फ एक बार पर कार्रवाई की अनुमति देने के चियांग लेखन समाप्त हो गया, अगर उस समय एक अच्छा विचार की तरह किसी अन्य कारण के लिए।
public static class EnumerableExtensions
{
public static void ForEach<T>(this IEnumerable<T> collection, Action<T> action)
{
foreach (var item in collection)
{
action(item);
}
}
public static IEnumerable<T> Once<T>(this IEnumerable<T> collection,
Func<IEnumerable<T>, bool> predicate, Action<IEnumerable<T>> action)
{
if (predicate(collection))
action(collection);
return collection;
}
public static IEnumerable<T> ForEvery<T>(this IEnumerable<T> collection,
Func<T, bool> predicate, Action<T> action)
{
foreach (var item in collection)
{
if (predicate(item))
action(item);
}
return collection;
}
}
तुम मेरे ब्लॉग पोस्ट Extend IEnumerable with ForEach and Once Methods पर उपयोग का उदाहरण कोड पा सकते हैं:
कोड यह रहा।
स्रोत
2011-05-28 02:03:16
के संभावित डुप्लिकेट [के लिए foreach के LINQ बराबर IEnumerable] (http://stackoverflow.com/questions/200574/linq-equivalent-of-foreach-for-ienumerablet) –
nawfal