Code/Extensions/EnumerableExtensions.cs
namespace Nodebox.Extensions;
public static class EnumerableExtensions {
extension<T>(IEnumerable<T> ie) {
public IEnumerable<(int Index, T Item)> Enumerate() {
var max = ie.Count();
return Enumerable.Range(0, max).Zip(ie);
}
public void ForEach(Action<T> action) {
foreach (T item in ie) {
action(item);
}
}
public IEnumerable<TOut> SelectWhere<TOut>(Func<T, TOut> action) {
return ie.SelectMany(x => {
var result = action(x);
return result == null ? Enumerable.Empty<TOut>() : [result];
});
}
}
}