2015-06-26 41 views
1

我想在我的List<List<double[]>>()中为我的所有double[]添加一列零。如何在列表<列表<double[]>>()中添加一列零?

double[]的长度是目前2,我想有长度3.零应始终处于第三位置的doubles[],例如:

double[50, 75] // double [50,75,0] 

这在所有完成在List<List<double[]>>之内的List<double[]>

有没有简短的方法来做到这一点?

回答

2

有代码行而言这样做的一小段路,但分配和拷贝的数量等于阵列的原始列表的数量:

var res = orig. 
    Select(list => list 
     .Select(array => array.Concat(new[] {0.0}).ToArray()) 
     .ToList() 
    ).ToList(); 

Demo.

+0

我想她想扩大阵列。如果有另一个指向'orig'的指针,这个指针将不会进行更改。在这种情况下,她将在她的应用程序中有不一致的数据.... –

+0

@OldFox OP问题是否想要对原始文件进行更改或复制是不明确的。 – dasblinkenlight

0

因为要在阵列中源列表扩展你需要操纵它们在内部列表:

 foreach (var list in rootList) 
     { 
      for (var i = 0; i < list.Count; i++) 
      { 
       var actor = list[i]; 
       list[i] = new double[actor.Length + 1]; // all elements will be 0.... 
       Array.Copy(list[i], actor, actor.Length); //just add the prev elements 
      } 
     } 

上面的操作将采用日e改为指向List<List<double[]>>的所有指针。 如果您不想在所有指向rootList的指针上进行更改,@dasblinkenlight answer是否足够好。

相关问题