[英]In C#, How can I iterate through a entire 2D Array and count the number of 0s?
[英]C# iterate through 2d array
我需要將值輸出如下:
"API Docs Portal : op-api-docs"
"Big Ideas : op-bigideas"
"Education : op-education"
....
我已經嘗試了一些東西,但是它沒有按預期工作...
for (var x = 1; x <= reportValue.GetLength(0); x++)
{
for (var y = 1; y <= reportValue.GetLength(1); y++)
{
if (reportValue[x, y] != null)
{
var id = reportValue[x, y];
var name = reportValue[x, y + 1];
var result = name + " : " + id;
}
}
}
注意:
這是我獲取reportValue
數組的方式(使用C#Interop):
var reportLast = ws.Range["A" + ws.Rows.Count].End(Excel.XlDirection.xlUp).Row;
var rngReport = (Excel.Range)ws.Range[ws.Cells[2, 1], ws.Cells[reportLast, 2]];
var reportValue = rngReport.Cells.Value;
目前尚不清楚為什么在這里有兩個循環。 您總是希望每一行都具有相同的兩個元素-索引1和索引2。因此,您只需要:
for (var x = 1; x <= reportValue.GetLength(0); x++)
{
var id = reportValue[x, 1];
var name = reportValue[x, 2];
var result = name + " : " + id;
// Use result
}
那將獲取[1, 1] : [1, 2]
,然后[2, 1] : [2, 2]
,然后[3, 1] : [3, 2]
等-看起來正是您所需要的。
將2D數組轉換為這種格式的字符串的最佳方法是:
var results = string.Join(Environment.NewLine, array.Select(x => string.Join(" : ", x)));
以這個數組為例:
var array = new string[][]
{
new string[] { "Hello world", "Hello" },
new string[] { "Stack", "Overflow" }
};
“結果”的輸出為:
世界你好:你好
堆棧溢出
標題似乎有點誤導,因為它似乎不是標准的2D陣列。
不過:
StringBuilder builder = new StringBuilder();
for (int i = 1; i <= reportValue.GetLength(0); i++)
{
string id = (string)reportValue[i, 1];
string name = (string)reportValue[i, 2];
builder.AppendLine(id + " : " + name);
}
// Process the result
因為數組似乎是從1開始而不是從0開始for
從1開始for
循環。
假設只需要兩個值,則可以使用[i,1]和[i,2],而不是使用GetLength(1)
遍歷次級零件的長度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.