我有一个清单:
var x = new List<string>(){"a","b","c"}
我正在寻找一种非常简单的方法来更改所有项目 例如:
var x = new List<string>(){"a","b","c"}
var y = new List<string>(){"d","e","f"}
x.addAfterFirst(y);
结果x= "a","d","e","f"
我知道'x.Skip(1)'可以回复我的信息。我需要设置它。
答案 0 :(得分:5)
您可以使用Take Extension Method从[{1}}获取第一个 n 项目,并使用Concat Extension Method将其与x
联系起来:
y
如果您想要就地修改List<string> x = new List<string> { "a", "b", "c" };
List<string> y = new List<string> { "d", "e", "f" };
int n = 1;
List<string> result = x.Take(n).Concat(y).ToList();
// result == { "a", "d", "e", "f" }
而不是创建新列表,可以使用RemoveRange Method删除第一个 n 项目后的所有项目,以及AddRange Method将x
追加到y
:
x
答案 1 :(得分:1)
利用InsertRange完成任务
var x = new list<string>(){"a","b","c"}
var y = new list<string>(){"d","e","f"}
x.InsertRange(2,y);
修改强>
现在,如果你想删除元素
var x = new list<string>(){"a","b","c"};
int xlength = x.Count() - 1;
var y = new list<string>(){"d","e","f"};
int ylength = y.Count() - 1;
x.InsertRange(2,y);
x.RemoveRang( 2 + ylength, xlength- 2);
答案 2 :(得分:0)
您的结果与完整说明
不符您是否希望插入或替换
您需要修改现有的集合还是接受新的集合?
所有示例都使用以下初始化
var insertIndex=1;
var x = new List<string>(){"a","b","c"};
var y = new List<string>(){"d","e","f"};
新集合替换
var result=x.Take(insertIndex).Concat(y).ToList();
新收藏插页
var result=x.Take(insertIndex).Concat(y).Concat(x.Skip(insertIndex)).ToList();
修改集合替换
x.RemoveRange(insertIndex,x.Count-insertIndex);
x.AddRange(y);
修改集合插入
x.InsertRange(insertIndex,y);
答案 3 :(得分:0)
非LINQ扩展方式:
int i;
for (i=0;i < y.Count;i++)
{
if (i+1 < x.Count)
x[i+1] = y[i];
else
x.Add(y[i]);
}
//If you dont want trailing elements to remain in x
for (;i < x.Count;i++)
x.RemoveAt(i);