通过linq更改每个元素的值

时间:2017-06-10 08:50:34

标签: c# linq

是否可以在LINQ中执行这样的操作:

int[] d = new int[c.Length + 1];     
int e = 1;
                d.ToList().ForEach(r => 
                {
                    r = e;
                    e++;
                });

? 当我这样做时,它返回了我的零序列。 问候。

1 个答案:

答案 0 :(得分:4)

是的,它有两个原因:

  • 您正在创建原始数组的副本List<int>,然后尝试修改List<int>。那不会修改数组。
  • 您的lambda表达式会更改参数的值,即全部。它没有修改列表。

基本上,LINQ用于查询。不要试图这样做:如果你想修改集合,请使用for循环。

但是,如果您的目标是生成一个1 ...(c.Length + 1)的数组,只需使用Enumerable.Range

var array = Enumerable.Range(1, c.Length + 1).ToArray();