Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何搜索多维数组?_C#_Search_Multidimensional Array_Find - Fatal编程技术网

C# 如何搜索多维数组?

C# 如何搜索多维数组?,c#,search,multidimensional-array,find,C#,Search,Multidimensional Array,Find,在C#中 Array.Find(arrayName,value); 搜索一维数组。对于多维数组(例如,myArray[,]),是否仍有这样做的方法 没有内置的多维搜索功能。您必须自己编写。展平多维数组,然后使用数组。查找使用Excel和VSTO,我一直在处理多维数组。像array.Find()这样的多维数组没有内置函数 基本上有两种选择:创建自己的helper方法并在那里实现通用搜索模式,或者生成与多维数组内容相关的域对象列表。我个人倾向于选择后者 如果您选择编写一个helper方法,它可能看

在C#中

Array.Find(arrayName,value);

搜索一维数组。对于多维数组(例如,
myArray[,]
),是否仍有这样做的方法

没有内置的多维搜索功能。您必须自己编写。

展平多维数组,然后使用
数组。查找

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

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

如果您选择编写一个helper方法,它可能看起来(非常粗略)如下:

Array.Find<T>(arrayName, value);

如果你需要多次搜索这样的
O(dimension\u 1*dimension\u 2*…*dimension\u n)
search,那么在选择算法和数据结构时,你很可能做了一些非常错误的事情。展平过程将比循环搜索花费更长的时间。@TheLQ:我同意,将搜索与扁平化过程内联是更好的方法。所有的上限都应该是++或<需要是很好的解决方案。你说得对,使用VSTO和Excel这非常有用。
// 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);