public static IEnumerable<int> IndexCollection(IEnumerable<Type> source, Func<Type, bool> predicate)
{
return source.Where(_ => predicate(_)).Select((value, index) => index);
}

こういうことですか?でもなぜかこう書くと評価されなくて返り値がnullのままになります

var list = num.Where(_ => _ > 12).Select((value, index) => index);

こう書くときちんと評価されるのですが・・・さっぱりわかりません