DataTable
foreach
loopDataTable
can be used with foreach
. It is possible (and often helpful) to loop through all the elements in the DataTable
.
The DataTable
class
allows the use of the foreach
-loop and its enumerator. But iterating over the items in a DataRow
can be confusing.
We use 2 public instance properties. These are Rows, which returns a typed collection of rows, and ItemArray
, which returns a collection of cell values boxed in objects.
DataRows
in the first foreach
-loop. But the ItemArray
property requires that you cast the iteration variable.GetTable
creates a DataTable
and returns a reference to it. We use 2 foreach
-loops to iterate over that data.ItemArray
elements, it is often easier to cast the cell values to their original types.using System; using System.Data; class Program { static void Main() { DataTable table = GetTable(); foreach (DataRow row in table.Rows) { foreach (var item in row.ItemArray) { Console.WriteLine(item); } } } static DataTable GetTable() { DataTable table = new DataTable(); table.Columns.Add("Size", typeof(int)); table.Columns.Add("Category", typeof(string)); table.Columns.Add("Name", typeof(string)); table.Columns.Add("Date", typeof(DateTime)); // Use 1 row for simplicity. table.Rows.Add(15, "dog", "Spot", DateTime.Now); return table; } }Item: 15 Item: dog Item: Spot Item: 11/3/2020 5:33:27 AM
foreach
You can also use the generic Field method that receives one type parameter. We can loop over Rows with foreach
, and then use Field to get each cell.
int
, string
and DateTime
.using System; using System.Data; class Program { static void Main() { DataTable table = GetTable(); foreach (DataRow row in table.Rows) { var field1 = row.Field<int>(0); var field2 = row.Field<string>(1); var field3 = row.Field<string>(2); var field4 = row.Field<DateTime>(3); Console.WriteLine("{0} {1} {2} [{3}]", field1, field2, field3, field4); } } static DataTable GetTable() { DataTable table = new DataTable(); table.Columns.Add("Size", typeof(int)); table.Columns.Add("Category", typeof(string)); table.Columns.Add("Name", typeof(string)); table.Columns.Add("Date", typeof(DateTime)); table.Rows.Add(15, "dog", "Spot", DateTime.Now); return table; } }15 dog Spot [11/3/2020 5:38:29 AM]
We examined foreach
, Rows and ItemArray
on the DataTable
object. We can display and save all cell values in the DataTable
at any time.