如何搜索多维数组?

时间:2011-05-21 21:50:11

标签: c# search multidimensional-array find

在C#中,

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

搜索一维数组。无论如何,对多维数组(例如myArray[,,])执行此操作?

3 个答案:

答案 0 :(得分:6)

使用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);

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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