Returns the first index in an IList
that matches the given predicate function, match
.
Use Enumerable.Range()
to iterate over all indices in data
.
Use IEnumerable.Where()
to filter out all values in data
for which match
returns false
.
Use IEnumerable.First()
to return only the first matching index.
代码实现
using System.Collections.Generic;
using System.Linq;
public static partial class _30s
{
public static int FindIndexOfFirstBy<T>(IList<T> data, Predicate<T> match)
{
return Enumerable
.Range(0, data.Count())
.Where(i => match(data[i]))
.First();
}
}
使用样例
int[] nums = {1, 2, 4, 5, 2, 2, 4};
_30s.FindIndexOfFirstBy(nums, x => x % 2 == 0); // 1