17/02/20 03:28:01.67 Cim83SJm0.net
>>684
別に難しくなくて、素直に書けばいいと思うけど
public static int FirstIndex<T>(this IEnumerable<T> source, Func<T, bool> predicate)
{
int index = 0;
foreach (var val in source)
{
if (predicate(val)) return index;
index++;
}
return -1;
}
条件にあったのも全て返すなら yield return を使う
public static IEnumerable<int> WhereIndex<T>(this IEnumerable<T> source, Func<T, bool> predicate)
{
int index = 0;
foreach (var val in source)
{
if (predicate(val)) yield return index;
index++;
}
}