循环遍历数据表

Posted

技术标签:

【中文标题】循环遍历数据表【英文标题】:Looping through a DataTable 【发布时间】:2012-08-25 06:07:56 【问题描述】:

嗯。我有一个包含多列和多行的 DataTable。

我想动态循环遍历 DataTable,基本上输出应该如下所示,不包括大括号:

Name (DataColumn)
Tom  (DataRow)
Peter (DataRow)

Surname (DataColumn)
Smith (DataRow)
Brown (DataRow)

foreach (DataColumn col in rightsTable.Columns)

     foreach (DataRow row in rightsTable.Rows)
     
          //output              
     
 

我把它打了出来,发现这行不通。有人可以建议更好的方法吗?

【问题讨论】:

您能否详细说明您是如何“注意到这不起作用”的?它有什么问题? 【参考方案1】:
foreach (DataColumn col in rightsTable.Columns)

     foreach (DataRow row in rightsTable.Rows)
     
          Console.WriteLine(row[col.ColumnName].ToString());           
     
 

【讨论】:

这是我一直在寻找的解决方案。非常感谢。 DataRow 对象可以接收一个 DataColumn 作为参数。因此,您可以简单地使用 row[col]. 而不是 row[col.ColumnName]【参考方案2】:
     foreach (DataRow row in dt.Rows) 
     
        foreach (DataColumn col in dt.Columns)
           Console.WriteLine(row[col]);
     

【讨论】:

问题在于它将重复我不想要的每个数据行的列名。基本上我希望该列显示一次,然后显示该列的所有行【参考方案3】:

如果您想更改数据表中每个单元格的内容,那么我们需要创建另一个数据表并使用“导入行”将其绑定如下。如果我们不创建另一个表,它会抛出一个异常,说“Collection was Modified”。

考虑下面的代码。

//New Datatable created which will have updated cells
DataTable dtUpdated = new DataTable();

//This gives similar schema to the new datatable
dtUpdated = dtReports.Clone();
foreach (DataRow row in dtReports.Rows)

    for (int i = 0; i < dtReports.Columns.Count; i++)
    
        string oldVal = row[i].ToString();
        string newVal = ""+oldVal;
        row[i] = newVal;
    
    dtUpdated.ImportRow(row); 

这将有所有以括号()开头的单元格

【讨论】:

【参考方案4】:

请尝试以下代码:

//Here I am using a reader object to fetch data from database, along with sqlcommand onject (cmd).
//Once the data is loaded to the Datatable object (datatable) you can loop through it using the datatable.rows.count prop.

using (reader = cmd.ExecuteReader())

// Load the Data table object
  dataTable.Load(reader);
  if (dataTable.Rows.Count > 0)
  
    DataColumn col = dataTable.Columns["YourColumnName"];  
    foreach (DataRow row in dataTable.Rows)
                                       
       strJsonData = row[col].ToString();
    
  

【讨论】:

以上是关于循环遍历数据表的主要内容,如果未能解决你的问题,请参考以下文章

求最简单的方法进行原生js 循环遍历树(json数据)

循环遍历数据框字典

如何使用foreach循环进入另一个foreach循环来遍历c​​odeigniter中的两个不同的数据表?

php 循环遍历json数据

在 v-for 循环中单击时检索数据,然后循环遍历数据

循环遍历数据库 ResultSet