如何使用C#遍历DataTable中的列?

62

如何使用 foreach 循环遍历 DataRow 中的每一列?

DataTable dtTable = new DataTable();
MySQLProcessor.DTTable(mysqlCommand, out dtTable);

foreach (DataRow dtRow in dtTable.Rows)
{
    //foreach(DataColumn dc in dtRow)
}
7个回答

93

这应该可以工作:

DataTable dtTable;

MySQLProcessor.DTTable(mysqlCommand, out dtTable);

// On all tables' rows
foreach (DataRow dtRow in dtTable.Rows)
{
    // On all tables' columns
    foreach(DataColumn dc in dtTable.Columns)
    {
      var field1 = dtRow[dc].ToString();
    }
}

23

我认为这就是你想要的:

DataTable dtTable = new DataTable();
foreach (DataRow dtRow in dtTable.Rows)
{
    foreach (DataColumn dc in dtRow.ItemArray)
    {

    }
}

ItemArray就是我一直在寻找的东西。在智能感知中没有找到它。 - voddy
2
请注意,ItemArray 的类型为 Object[],因此 dc 应该被声明为 Object 类型,而不是 DataColumn。 - Dono

12

您可以这样做:

DataTable dt = new DataTable("MyTable");

foreach (DataRow row in dt.Rows)
{
    foreach (DataColumn column in dt.Columns)
    {
        if (row[column] != null) // This will check the null values also (if you want to check).
        {
               // Do whatever you want.
        }
     }
}

11

你可以参考这个方法。使用foreach循环遍历提供给DataTable的DataColumn。

 foreach(DataColumn column in dtTable.Columns)
 {
     // do here whatever you want to...
 }

7

所以你需要将它保留在特定的行内,这就是让我感到困惑的部分? - user222427
是的,你可以获取行=>列属于数据表,所以你可以获取行中每个列的值。 - Kamil Lach

1
int countRow = dt.Rows.Count;
int countCol = dt.Columns.Count;

for (int iCol = 0; iCol < countCol; iCol++)
{
     DataColumn col = dt.Columns[iCol];

     for (int iRow = 0; iRow < countRow; iRow++)
     {
         object cell = dt.Rows[iRow].ItemArray[iCol];

     }
}

1
在LINQ中,你可以这样做:

foreach (var data in from DataRow row in dataTable.Rows
                     from DataColumn col in dataTable.Columns
                          where
                              row[col] != null
                          select row[col])
{
    // do something with data
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接