1

私はC#が初めてです。以下に示すように、単純な for each ループを使用して取得する方法を知っています。位置/インデックス/列番号で取得する方法を教えてもらえますか?

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 = "";
}
4

1 に答える 1

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();
于 2013-11-05T22:10:38.243 に答える