EnumerableExtension.cs 831 B

123456789101112131415161718192021222324252627282930
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace HandyControl.Tools.Extension;
  5. public static class EnumerableExtension
  6. {
  7. public static IEnumerable<TSource> Do<TSource>(this IEnumerable<TSource> source, Action<TSource> predicate)
  8. {
  9. var enumerable = source as IList<TSource> ?? source.ToList();
  10. foreach (var item in enumerable)
  11. {
  12. predicate.Invoke(item);
  13. }
  14. return enumerable;
  15. }
  16. public static IEnumerable<TSource> DoWithIndex<TSource>(this IEnumerable<TSource> source, Action<TSource, int> predicate)
  17. {
  18. var enumerable = source as IList<TSource> ?? source.ToList();
  19. for (var i = 0; i < enumerable.Count; i++)
  20. {
  21. predicate.Invoke(enumerable[i], i);
  22. }
  23. return enumerable;
  24. }
  25. }