Как «предустановить» столбец в таблице данных с помощью C #?

#c# #foreach

#c# #foreach

Вопрос:

Как мне выполнить цикл по каждому столбцу в foreach потоке данных с помощью?

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

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

Ответ №1:

Это должно сработать:

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

Ответ №2:

Я считаю, что это то, что вы хотите:

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

    }
}
 

Комментарии:

1. itemArray — это то, что я искал. Не получил его через intellisense.

2. Обратите внимание, что itemArray имеет тип Object[] , поэтому dc должен быть типизированным Object, а не DataColumn .

Ответ №3:

Вы можете сделать это следующим образом:

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

Ответ №4:

Вы можете это проверить. Используйте цикл foreach для столбца данных, предоставленного вместе с вашей таблицей данных.

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

Ответ №5:

Что-то вроде этого:

  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

Комментарии:

1. значит, вы останетесь внутри этой конкретной строки, это та часть, которая заставила меня задуматься об этом?

2. да, вы получаете строку => столбцы принадлежат datatable, так что вы можете получить значение каждого столбца в строке.

Ответ №6:

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

Ответ №7:

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

     }
}