user222427
user222427

Reputation:

How to 'foreach' a column in a DataTable using C#?

How do I loop through each column in a datarow using foreach?

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

foreach (DataRow dtRow in dtTable.Rows)
{
    //foreach(DataColumn dc in dtRow)
}

Upvotes: 62

Views: 419902

Answers (8)

Anwer Jamal
Anwer Jamal

Reputation: 1

string a,b,c;
foreach (DataRow dtRow in dtTable.Rows)
{
    a = dtRow["FirstColumnName"].ToString();
    b = dtRow["SecondColumnName"].ToString();
    c = dtRow["ThirdColumnName"].ToString();
}

Upvotes: -1

jle
jle

Reputation: 9489

You can check this out. Use foreach loop over a DataColumn provided with your DataTable.

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

Upvotes: 11

Luca Ziegler
Luca Ziegler

Reputation: 4164

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];

     }
}

Upvotes: 1

Marthijn
Marthijn

Reputation: 3402

In LINQ you could do something like:

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
}

Upvotes: 1

glosrob
glosrob

Reputation: 6715

I believe this is what you want:

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

    }
}

Upvotes: 24

Glory Raj
Glory Raj

Reputation: 17701

You can do it like this:

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

Upvotes: 12

Davide Piras
Davide Piras

Reputation: 44605

This should work:

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

Upvotes: 95

Kamil Lach
Kamil Lach

Reputation: 4629

Something like this:

 DataTable dt = new DataTable();

 // For each row, print the values of each column.
    foreach(DataRow row in dt .Rows)
    {
        foreach(DataColumn column in dt .Columns)
        {
            Console.WriteLine(row[column]);
        }
    }

http://msdn.microsoft.com/en-us/library/system.data.datatable.rows.aspx

Upvotes: 7

Related Questions