小编典典

如何获取IEnumerable中元素的索引?

c#

我这样写:

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();
    }
}

但是我不知道它是否已经存在了吗?


阅读 727

收藏
2020-05-19

共1个答案

小编典典

将内容发布为IEnumerable的全部目的是让您可以懒惰地遍历内容。因此,没有 真正
的指数的概念。对于IEnumerable,您实际上所做的事情并没有多大意义。如果需要支持按索引访问的内容,请将其放入实际的列表或集合中。

2020-05-19