循环访问DataTable
好。 我有一个包含多列和多行的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 } }
我输入了它,发现这不起作用。 有人可以建议更好的方法吗?
foreach (DataColumn col in rightsTable.Columns) { foreach (DataRow row in rightsTable.Rows) { Console.WriteLine(row[col.ColumnName].ToString()); } }
foreach (DataRow row in dt.Rows) { foreach (DataColumn col in dt.Columns) Console.WriteLine(row[col]); }
请尝试以下代码:
//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(); } } }
如果要更改数据表中每个单元格的内容,则需要创建另一个数据表并使用“导入行”按如下方式绑定它。 如果我们不创建另一个表,它将抛出一个Exception,说“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); }
这将包含Paranthesis({)之前的所有单元格