如何搜索多维数组?

在C#中,

Array.Find(arrayName, value); 

搜索一维数组。 反正有多维数组(例如myArray[,,] )吗?

使用Excel和VSTO,我一直处理多维数组。 没有像Array.Find()这样的多维数组的内置函数。

您基本上有两种选择:创建自己的辅助方法并在那里实现通用搜索模式,或生成与多维数组内容相关的域对象列表。 我个人倾向于选择后一种选择。

如果你选择编写一个帮助器方法,它可能看起来像(非常粗略地)这样:

 // you could easily modify this code to handle 3D arrays, etc. public static class ArrayHelper { public static object FindInDimensions(this object[,] target, object searchTerm) { object result = null; var rowLowerLimit = target.GetLowerBound(0); var rowUpperLimit = target.GetUpperBound(0); var colLowerLimit = target.GetLowerBound(1); var colUpperLimit = target.GetUpperBound(1); for (int row = rowLowerLimit; row < rowUpperLimit; row++) { for (int col = colLowerLimit; col < colUpperLimit; col++) { // you could do the search here... } } return result; } } 

您可以在应用程序代码的其他部分中引用这样的静态扩展:

 object[,] myArray = GetMyArray(); // gets an array[,] myArray.FindInDimensions(someObject); 

没有内置的多维搜索function。 你必须自己写。

展平多维数组,然后使用Array.Find