如何搜索多维数组
本文关键字:数组 搜索 何搜索 | 更新日期: 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
。