如何解决如何有效地复制列表中的特定值
在C#中,如何复制列表中的值? 我已经找到了很多解决方案智能解决方案(尤其是在Linq中),它们涉及到如何删除,但没有关于如何复制的内容,在任何情况下都无法适应我的需要。
例如如果我想复制16-> Lst {0 0 12 13 16 0 3} ---> {0 0 12 13 16 16 0 3}
我不必循环使用它们,而是希望有一条指令
感谢您的帮助
帕特里克
解决方法
您可以编写自己的扩展方法,并可以使用与默认LINQ方法相同的方法:
public static IEnumerable<T> Duplicate<T>(this IEnumerable<T> input,T toDuplicate)
{
foreach(T item in input)
{
yield return item;
if(EqualityComparer<T>.Default.Equals(item,toDuplicate))
{
yield return item;
}
}
}
用法是
var test = new List<int>() { 0,12,13,16,3 };
var duplicated = test.Duplicate(16).ToList();
,
尝试
list.Insert((list.FindIndex(a => a== valueToBeDuplicated) + 1),valueToBeDuplicated));
因此FindIndex(a => a == valueToBeDuplicated)
将获得索引,然后通过添加+ 1
将其插入下一个索引。
一个简单但并非最佳的解决方案可能是结合SelectMany
和Repeat
运算符:
var result = source.SelectMany(x => Enumerable.Repeat(x,x == 16 ? 2 : 1));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。