Fusionar dos matrices en .NET
¿Existe una función integrada en .NET 2.0 que tomará dos matrices y las fusionará en una sola?
Ambas matrices son del mismo tipo. Obtengo estas matrices de una función ampliamente utilizada dentro de mi código base y no puedo modificar la función para devolver los datos en un formato diferente.
Estoy buscando evitar escribir mi propia función para lograr esto si es posible.
En C# 3.0 puedes usar el método Concat de LINQ para lograr esto fácilmente:
int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = front.Concat(back).ToArray();
En C# 2.0 no tienes una forma tan directa, pero Array.Copy es probablemente la mejor solución:
int[] front = { 1, 2, 3, 4 };
int[] back = { 5, 6, 7, 8 };
int[] combined = new int[front.Length + back.Length];
Array.Copy(front, combined, front.Length);
Array.Copy(back, 0, combined, front.Length, back.Length);
Esto podría usarse fácilmente para implementar su propia versión de Concat
.
Utilice LINQ :
var arr1 = new[] { 1, 2, 3, 4, 5 };
var arr2 = new[] { 6, 7, 8, 9, 0 };
var arr = arr1.Union(arr2).ToArray();
Tenga en cuenta que esto eliminará los duplicados. Si desea conservar duplicados, utilice Concat.
Si puede manipular una de las matrices, puede cambiar su tamaño antes de realizar la copia:
T[] array1 = getOneArray();
T[] array2 = getAnotherArray();
int array1OriginalLength = array1.Length;
Array.Resize<T>(ref array1, array1OriginalLength + array2.Length);
Array.Copy(array2, 0, array1, array1OriginalLength, array2.Length);
De lo contrario, puedes crear una nueva matriz.
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);
Más información sobre los métodos de matriz disponibles en MSDN .