FindIndexOfAll
Returns all indices in an IList that match the given predicate function, match.
- Use
Enumerable.Range()to iterate over all indices indata. - Use
IEnumerable.Where()to filter out all values indatafor whichmatchreturnsfalseand return only matching indices.
using System.Collections.Generic;
using System.Linq;
public static partial class _30s
{
public static IEnumerable<int> FindIndexOfAll<T>(IList<T> data, Predicate<T> match)
{
return Enumerable
.Range(0, data.Count())
.Where(i => match(data[i]));
}
}int[] nums = {1, 2, 4, 5, 2, 2, 4};
_30s.FindIndexOfAll(nums, x => x % 2 != 0); // {0, 3}