gpt4 book ai didi

c# - 复制 IEnumerable,替换一个项目

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:00 24 4
gpt4 key购买 nike

我想复制一份 IEnumerable<T>其中给定索引处的单个项目已被给定值替换。

我定义了下面的方法来完成我想要的:

public static IEnumerable<T> ReplaceAt<T>(this IEnumerable<T> source, T item, int index)
{
foreach (T before in source.Take(index))
{
yield return before;
}

yield return item;

foreach (T after in source.Skip(index + 1))
{
yield return after;
}
}

然而,虽然可能很容易理解,但创建两个迭代器似乎“效率低下”,其中一个迭代器会跳过第一个迭代器已经采用的项目。

是否有更好的定义方法?

最佳答案

怎么样:

public static IEnumerable<T> ReplaceAt<T>(this IEnumerable<T> source, T item, int index)
{
return source.Select((value, i) => index == i ? item : value);
}

关于c# - 复制 IEnumerable,替换一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39528665/

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