我是C#编程的新手,我是从python迁移的。我想将两个或更多数组(确切的数字未知,取决于数据库条目)附加到单个数组中 就像python中的list.append方法一样。这里是我想要做的代码示例
int[] a = {1,2,3};
int[] b = {4,5,6};
int[] c = {7,8,9};
int[] d;
我不想一次添加所有数组。我需要有点像这样
// I know this not correct
d += a;
d += b;
d += c;
这是我想要的最终结果
d = {{1,2,3},{4,5,6},{7,8,9}};
这对你们来说太容易了但是我只是从c#开始。
答案 0 :(得分:2)
好吧,如果您想要一个简单的 1D 数组,请尝试SelectMany
:
int[] a = { 1, 2, 3 };
int[] b = { 4, 5, 6 };
int[] c = { 7, 8, 9 };
// d == {1, 2, 3, 4, 5, 6, 7, 8, 9}
int[] d = new[] { a, b, c } // initial jagged array
.SelectMany(item => item) // flattened
.ToArray(); // materialized as a array
如果你想要一个锯齿状的数组(数组数组)
// d == {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
// notice the declaration - int[][] - array of arrays of int
int[][] d = new[] { a, b, c };
如果您想要有条件地附加数组,而不是一次性,数组不是要为d
选择的集合类型; List<int>
或List<int[]>
会更好:
// 1d array emulation
List<int> d = new List<int>();
...
d.AddRange(a);
d.AddRange(b);
d.AddRange(c);
或者
// jagged array emulation
List<int[]> d = new List<int[]>();
...
d.Add(a); //d.Add(a.ToArray()); if you want a copy of a
d.Add(b);
d.Add(c);
答案 1 :(得分:0)
从您的代码看来,d
不是一维数组,但它似乎是一个锯齿状数组(和数组数组)。如果是这样,你可以这样写:
int[][] d = new int[][] { a, b, c };
如果您想要将所有数组连接到新的d
,可以使用:
int[] d = a.Concat(b).Concat(c).ToArray();
答案 2 :(得分:0)
var z = new int[x.Length + y.Length];
x.CopyTo(z, 0);
y.CopyTo(z, x.Length);
答案 3 :(得分:0)
您可以使用Array.Copy
。它将一个Array中的一系列元素复制到另一个数组中。 Reference
int[] a = {1,2,3};
int[] b = {4,5,6};
int[] c = {7,8,9};
int[] combined = new int[a.Length + b.Length + c.Length];
Array.Copy(a, combined, a.Length);
Array.Copy(b, 0, combined, a.Length, b.Length);
Array.Copy(c, 0, combined, a.Length, b.Length, c.Length);