Usually in the DAL layer we need to convert the DataTable to list<t> to make the caller as good as possible, as far as possible not to care about the database fields, etc., so we generally pass the past are list<t> rather than DataTable. However, it is time-consuming to write such repetitive code frequently, so we use the method of reflection to generate the list<t> dynamically.
1. Suppose entity class public class User {public int ID {get; set;}
public string LoginName {get; set;}
public string NAMECN {get; set;}
public string Nameen {get; set;}}
Then you might want to write a method that converts a DataTable to an entity object, facilitating datatable.rows to get and populate it. 2. Convert DataTable to entity private static list<t> tabletoentity<t> (DataTable dt) where T:class,new () {Type T by reflection
ype = typeof (T);
list<t> list = new list<t> (); foreach (DataRow row in dt. Rows) {propertyinfo[] Parray = type.
GetProperties ();
t entity = new T ();
foreach (PropertyInfo p in Parray) {if (Row[p.name] are Int64 | | row[p.name] is Int32) {
P.setvalue (Entity, Convert.ToInt32 (row[p.name)), null);
Continue
} p.setvalue (Entity, Row[p.name], NULL); } list.
ADD (entity);
} return list; } 3. Call list<user> userlist = tabletoentity<user> (yourdatatable);