Работая с 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);