c# 一种将多个数组复制/合并到一个数组中的更好方法

标签 c# arrays

如果有更好的方法将多个数组复制到一个数组中,谁能提供建议?生成的数组必须具有相同顺序的元素,例如首先是 arrayOne 值,然后是 arraySecond 值等。

以下是我当前正在执行的模型,它按预期工作。正在寻找一种更智能的方法。

// Initialise the first array.
string[] arrayOne = new string[5];
arrayOne[0] = "arrayOneValue[0]";
arrayOne[1] = "arrayOneValue[1]";
arrayOne[2] = "arrayOneValue[2]";
arrayOne[3] = "arrayOneValue[3]";
arrayOne[4] = "arrayOneValue[4]";

// Initialise the second array.
string[] arrayTwo = new string[6];
arrayTwo[0] = "arrayTwoValue[0]";
arrayTwo[1] = "arrayTwoValue[1]";
arrayTwo[2] = "arrayTwoValue[2]";
arrayTwo[3] = "arrayTwoValue[3]";
arrayTwo[4] = "arrayTwoValue[4]";
arrayTwo[5] = "arrayTwoValue[5]";

// Initialise the third array.
string[] arrayThree = new string[3];
arrayThree[0] = "arrayThreeValue[0]";
arrayThree[1] = "arrayThreeValue[1]";
arrayThree[2] = "arrayThreeValue[2]";

// string[] arrayN = new string[n]
//.
//.
//.

// Initialise the target array.
string[] finalArray = new string[arrayOne.Length + arrayTwo.Length + arrayThree.Length];
// ArrayN - string[] finalArray = new string[arrayOne.Length + arrayTwo.Length + arrayThree.Length + arrayN.Length];

// Copy/merge the three arrays into the target array.
Array.Copy(arrayOne, 0, finalArray, 0, arrayOne.Length);
Array.Copy(arrayTwo, 0, finalArray, arrayOne.Length, arrayTwo.Length);
Array.Copy(arrayThree, 0, finalArray, (arrayOne.Length + arrayTwo.Length), arrayThree.Length);
//.
//.
//.
//.
// ArrayN - Array.Copy(arrayN, 0, finalArray, (arrayOne.Length + arrayTwo.Length + arrayN), arrayN.Length) ?;

正如您所见,对于 arrayN,代码会变得更长。我最多有 5 个阵列要复制到一个阵列中,因此,它是可管理的。我将此技术用作 WebAPI 的一部分,其中 oracle 参数对象的集合根据要传递给多个 Oracle 存储过程的业务规则进行整合。这里的任何建议表示赞赏。提前致谢。 结果

Console output 
/*--- Destination array -
arrayOneValue[0]
arrayOneValue[1]
arrayOneValue[2]
arrayOneValue[3]
arrayOneValue[4]
arrayTwoValue[0]
arrayTwoValue[1]
arrayTwoValue[2]
arrayTwoValue[3]
arrayTwoValue[4]
arrayTwoValue[5]
arrayThreeValue[0]
arrayThreeValue[1]
arrayThreeValue[2]*/

最佳答案

您可以只使用 LINQ .Concat 这样您就不需要手动处理数组的长度和偏移量:

var finalArray = arrayOne.Concat(arrayTwo).Concat(arrayThree).ToArray();

它的性能可能比使用 Array.Copy 稍差,但这段代码的可读性、可维护性和错误安全性要好得多,这一点更为重要。

关于c# 一种将多个数组复制/合并到一个数组中的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47321325/

相关文章:

C# DataGridView(使用数据源填充)不保存到数据库

java - 如何在 recyclerView android 中停止项目重复

c# - Dynamic Linq 的执行延迟 IQueryable<T>?

c# - 如何在数据网格/ TreeView 中显示两个表,同时显示父表和子表的列(当子表展开时)

c# - 流阅读器输出

javascript - 如何通过迭代时间戳操作向 API 询问许多值(过去 14 天)?

c++ - 在 C++ 中处理 int 数组

c# - 在 Xamarin Forms Shell 中隐藏 TabBar

arrays - 在二进制矩阵中找到不(必要)与图像边界对齐的最大矩形

arrays - VBA清除/重置excel文档的正确方法?