gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 03:32:59 26 4
gpt4 key购买 nike

我是这样写的:

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

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

最佳答案

我会质疑这种智慧,但也许:

source.TakeWhile(x => x != value).Count();

(如果需要,使用 EqualityComparer<T>.Default 来模拟 !=) - 但如果没有找到,您需要注意返回 -1 ......所以也许只是长途跋涉

public static int IndexOf<T>(this IEnumerable<T> source, T value)
{
int index = 0;
var comparer = EqualityComparer<T>.Default; // or pass in as a parameter
foreach (T item in source)
{
if (comparer.Equals(item, value)) return index;
index++;
}
return -1;
}

关于c# - 如何获取 IEnumerable 中元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1290603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com