什么是相当于InStr的数组(2维)在C#

我是新来的C#,如果我不解释我需要什么,请告诉我。 我从Excel文件读取一些数据,然后将数据存储到一个数组中。

excel.Application x1app = new excel.Application(); x1app.Visible = true; excel.Workbook x1workbook = x1app.Workbooks.Open(@"..."); x1workbook.Activate(); excel.Worksheet x1worksheet = x1workbook.Worksheets[1]; excel.Range x1range = x1worksheet.UsedRange; System.Array myvalues; myvalues = (System.Array)x1range.Cells.Value; 

现在我想在数组中使用来自VBA InStr等价物,但是我不知道等价物是什么。

我已经尝试Array.IndexOf(myvalue, "") ,但这项工作只适用于一维数组。

如果你要将一个范围导入数据结构,我想你想要的是一个二维数组:

 object[,] myvalues = x1range.Cells.Value; 

个体价值可以被提取如下:

 object cellValue = myvalues[3, 4]; 

如果你想遍历所有单元格,foreach是最简单的:

 foreach (object o in myvalues) { string myText = o == null ? null : o.ToString(); } 

或者,如果x / y位置很重要,则可以按如下方式遍历X / Y:

 for (int i = 1; i < myvalues.GetLength(0); i++) { for (int j = 1; j < myvalues.GetLength(1); i++) { object o = myvalues[i, j]; } } 

请注意,C#是基于0的,但在Excel输出中,您确实需要使用基于1的引用。

IndexOf函数可以在C#中工作,但不能用于这样的数组。 如果你想使用它,你总是可以把数组转换成一个列表:

 List<object> myList = myvalues.Cast<object>().ToList(); int found = myList.IndexOf("Foo");