How do I extract data from a DataTable? How do I extract data from a DataTable? sql sql

How do I extract data from a DataTable?


The DataTable has a collection .Rows of DataRow elements.

Each DataRow corresponds to one row in your database, and contains a collection of columns.

In order to access a single value, do something like this:

 foreach(DataRow row in YourDataTable.Rows) {      string name = row["name"].ToString();     string description = row["description"].ToString();     string icoFileName = row["iconFile"].ToString();     string installScript = row["installScript"].ToString(); }


You can set the datatable as a datasource to many elements.

For eg

gridView

repeater

datalist

etc etc

If you need to extract data from each row then you can use

table.rows[rowindex][columnindex]

or

if you know the column name

table.rows[rowindex][columnname]

If you need to iterate the table then you can either use a for loop or a foreach loop like

for ( int i = 0; i < table.rows.length; i ++ ){    string name = table.rows[i]["columnname"].ToString();}foreach ( DataRow dr in table.Rows ){    string name = dr["columnname"].ToString();}


The simplest way to extract data from a DataTable when you have multiple data types (not just strings) is to use the Field<T> extension method available in the System.Data.DataSetExtensions assembly.

var id = row.Field<int>("ID");         // extract and parse intvar name = row.Field<string>("Name");  // extract string

From MSDN, the Field<T> method:

Provides strongly-typed access to each of the column values in the DataRow.

This means that when you specify the type it will validate and unbox the object.

For example:

// iterate over the rows of the datatableforeach (var row in table.AsEnumerable())  // AsEnumerable() returns IEnumerable<DataRow>{    var id = row.Field<int>("ID");                           // int    var name = row.Field<string>("Name");                    // string    var orderValue = row.Field<decimal>("OrderValue");       // decimal    var interestRate = row.Field<double>("InterestRate");    // double    var isActive = row.Field<bool>("Active");                // bool    var orderDate = row.Field<DateTime>("OrderDate");        // DateTime}

It also supports nullable types:

DateTime? date = row.Field<DateTime?>("DateColumn");

This can simplify extracting data from DataTable as it removes the need to explicitly convert or parse the object into the correct types.