web-dev-qa-db-fra.com

Boucle à travers un DataTable

Bien. J'ai un DataTable avec plusieurs colonnes et plusieurs lignes.

Je veux parcourir le DataTable dynamiquement, la sortie devrait ressembler à ce qui suit, à l'exception des accolades:

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              
     }
} 

J'ai tapé cela et j'ai remarqué que cela ne fonctionnerait pas. Quelqu'un peut-il vous conseiller sur une meilleure façon de procéder?

19
SpaceApple
foreach (DataColumn col in rightsTable.Columns)
{
     foreach (DataRow row in rightsTable.Rows)
     {
          Console.WriteLine(row[col.ColumnName].ToString());           
     }
} 
42
Candide
     foreach (DataRow row in dt.Rows) 
     {
        foreach (DataColumn col in dt.Columns)
           Console.WriteLine(row[col]);
     }
13
oopbase

Veuillez essayer le code suivant ci-dessous:

//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();
    }
  }
}
6
Chikku Jacob

Si vous souhaitez modifier le contenu de chaque cellule d'une table de données, nous devons créer une autre table de données et la lier comme suit en utilisant "Importer une ligne". Si nous ne créons pas une autre table, elle lèvera une exception indiquant "La collection a été modifiée".

Considérez le code suivant.

//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); 
}

Cela aura toutes les cellules précédant de Paranthesis ({)

3
Deepak Kothari