我是C#的新手。我知道如何通过使用简单的每个循环来获得它,如下所示。你能告诉我如何通过位置/索引/列号得到它吗?
foreach (DataRow row_ in dt.Rows){
row = row_;
foreach (DataColumn col_ in dt.Columns){
col = col_;
strMsg = strMsg + col.ColumnName + ": " + row[col.Ordinal].ToString()
+ Environment.NewLine;
}
MessageBox.Show(strMsg);
strMsg = "";
}
答案 0 :(得分:1)
您可以通过IndexOf
获取序号。这是你的例子:
foreach (DataRow row_ in dt.Rows) {
row = row_;
foreach (DataColumn col_ in dt.Columns) {
col = col_;
strMsg = strMsg + col.ColumnName + ": " + row[dt.Columns.IndexOf(col_)].ToString()
+ Environment.NewLine;
}
MessageBox.Show(strMsg);
strMsg = "";
}
这是一个完整的样本:
var dt = new DataTable();
dt.Columns.Add(new DataColumn());
dt.Columns.Add(new DataColumn());
var row1 = dt.NewRow();
row1[0] = "0";
row1[1] = "1";
dt.Rows.Add(row1);
foreach (DataRow row in dt.Rows)
{
foreach (DataColumn col in dt.Columns)
{
var strMsg = col.ColumnName + ": " + row[dt.Columns.IndexOf(col)].ToString();
Console.WriteLine(strMsg);
}
}
如果您只想要数组中的列名,请删除foreach
循环并将其替换为此行:
string[] colNames = (from DataColumn col in dt.Columns select col.ColumnName).ToArray();