我这样写:
public static class EnumerableExtensions { public static int IndexOf<T>(this IEnumerable<T> obj, T value) { return obj .Select((a, i) => (a.Equals(value)) ? i : -1) .Max(); } public static int IndexOf<T>(this IEnumerable<T> obj, T value , IEqualityComparer<T> comparer) { return obj .Select((a, i) => (comparer.Equals(a, value)) ? i : -1) .Max(); } }
但是我不知道它是否已经存在了吗?
将内容发布为IEnumerable的全部目的是让您可以懒惰地遍历内容。因此,没有 真正 的指数的概念。对于IEnumerable,您实际上所做的事情并没有多大意义。如果需要支持按索引访问的内容,请将其放入实际的列表或集合中。