问题描述
如题,在.NET/C# 应用程序开发中如何将两个数组合并成一个数组?
方案一
如果在.NET 2.0或者以下版本中,由于没有LINQ,所以只能自定义实现将两个数组合并成一个数组的方法。
如果数组是可以修改的,那可以在复制数组数据之前更改其中一个数组的长度,如下:
T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
int array1OriginalLength = array1.Length;
Array.Resize(ref array1, array1OriginalLength + array2.Length);
Array.Copy(array2, 0, array1, array1OriginalLength, array2.Length);
如果数组是不可修改的,则可以直接创建一个新的数组,如下:
T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
T[] newArray = new T[array1.Length + array2.Length];
Array.Copy(array1, newArray, array1.Length);
Array.Copy(array2, 0, newArray, array1.Length, array2.Length);
方案二
如果是.NET 3.0及以上版本,我们可以使用LINQ的Concat方法把两个数组连接成一个数组,如下:
int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = front.Concat(back).ToArray();注:Concat方法不会去掉重复的数据
方案三
或者如果是.NET 3.0及以上版本,我们还可以使用LINQ的Union方法把两个数组连接成一个数组,如下:
var arr1 = new[] { 1, 2, 3, 4, 5 };
var arr2 = new[] { 6, 7, 8, 9, 0 };
var arr = arr1.Union(arr2).ToArray();注:Union方法会去掉重复的数据
方案四
如果是.NET 3.0及以上版本,还可以使用LINQ的AddRange方法,如下:
var array = new string[] { "test" }.ToList();
var array1 = new string[] { "test" }.ToList();
array.AddRange(array1);
var result = array.ToArray();



