在第n项之后轻松更改列表

时间:2011-09-12 12:20:17

标签: c# list

我有一个清单: 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)'可以回复我的信息。我需要设置它。

4 个答案:

答案 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 Methodx追加到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);