如何搜索多维数组

本文关键字:数组 搜索 何搜索 | 更新日期: 2023-09-27 17:57:06

在 C# 中,

Array.Find<T>(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);

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

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