DataRow Field Method: Cast DataTable CellUse the Field method on the DataRow class to cast DataTable cells to a specific type.
This page was last reviewed on Oct 8, 2023.
DataRow Field. The Field method on DataRow accesses a field. It is an extension method. It is found in the System.Data namespace.
Notes, method. Field() is a generic method—this means it returns typed data. It makes field access easier. We can avoid complicated casting expressions and exception handling.
An example. DataTable can be enumerated with the foreach-loop. Accessing the fields themselves is somewhat more complicated. The fields can have different types.
Note The DataTable in the example has cells with types of int, string and DateTime.
Start The example uses the foreach-loop. In the statement list it assigns variables to the results of the Field extension method.
DataTable foreach
Tip The Field extension method receives a type parameter. It has several parameter list overloads.
Detail The weight, name, code, and date variables are assigned to the results of the Field method with different parameters.
using System; using System.Data; class Program { static void Main() { // // Loop over DataTable rows and call the Field extension method. // foreach (DataRow row in GetTable().Rows) { // Get first field by column index. int weight = row.Field<int>(0); // Get second field by column name. string name = row.Field<string>("Name"); // Get third field by column index. string code = row.Field<string>(2); // Get fourth field by column name. DateTime date = row.Field<DateTime>("Date"); // Display the fields. Console.WriteLine("{0} {1} {2} {3}", weight, name, code, date); } } static DataTable GetTable() { DataTable table = new DataTable(); // Create DataTable table.Columns.Add("Weight", typeof(int)); // Add four columns table.Columns.Add("Name", typeof(string)); table.Columns.Add("Code", typeof(string)); table.Columns.Add("Date", typeof(DateTime)); table.Rows.Add(57, "Koko", "A", DateTime.Now); // Add five rows table.Rows.Add(130, "Fido", "B", DateTime.Now); table.Rows.Add(92, "Alex", "C", DateTime.Now); table.Rows.Add(25, "Charles", "D", DateTime.Now); table.Rows.Add(7, "Candy", "E", DateTime.Now); return table; } }
57 Koko A 7/14/2009 6:20:48 AM 130 Fido B 7/14/2009 6:20:48 AM 92 Alex C 7/14/2009 6:20:48 AM 25 Charles D 7/14/2009 6:20:48 AM 7 Candy E 7/14/2009 6:20:48 AM
Parameters. There are 2 parameter lists on each method invocation to Field. The first parameter to the method is enclosed in the brackets. This is called a type parameter.
Tip A type parameter indicates what type (such as int or string) you want the method to cast the result to.
Note The second parameter list indicates the name or location of the field by its column identifier.
Internals. How does Field() work internally? The DataRowExtensions class is an extension method class located in the System.Data.DataSetExtensions.dll file.
And When you use the methods such as Field in this class, the metadata loader will store this additional DLL in memory.
Info Field() will internally invoke a generic method that validates the parameter. It then uses a generic method to unbox the object.
Field, performance. Because no copying of the actual data will take place, the Field extension method will have adequate performance. A lower-level approach would be faster.
Summary. We looked at the Field extension method found in the System.Data namespace and the DataSetExtensions class. We cast the cells in a DataTable by a column identifier.
Dot Net Perls is a collection of tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on Oct 8, 2023 (edit).
© 2007-2024 Sam Allen.