Convert List of Entity from Datatable

  1. public static List<T> Convert<T>(DataTable dataTable)  
  2.  {  
  3.     List<T> lstEntity = new List<T>();  
  4.     if (dataTable == nullreturn lstEntity;  
  5.     Type classType = typeof(T);  
  6.     PropertyInfo[] propertyInfos = classType.GetProperties();  
  7.     if (propertyInfos.Count() == 0) return lstEntity; // there is no property to set value  
  8.     List<DataColumn> columns = dataTable.Columns.Cast<DataColumn>().ToList();  
  9.     foreach (DataRow row in dataTable.Rows)  
  10.     {  
  11.        T t = Activator.CreateInstance<T>();  
  12.        foreach (PropertyInfo propertyInfo in propertyInfos)  
  13.        {  
  14.           Attribute[] attribs = Attribute.GetCustomAttributes(propertyInfo, true);  
  15.           string propertyName = string.Empty;  
  16.           if (attribs.ToList().IsNullOrEmpty())  
  17.           propertyName = propertyInfo.Name;  
  18.           else  
  19.           propertyName = ((System.Xml.Serialization.XmlElementAttribute)(attribs[0])).ElementName;  
  20.           DataColumn column = columns.Find(col => col.ColumnName == propertyName);  
  21.           if (column != null)  
  22.           propertyInfo.SetValue(t, (row[column].GetType().ToString().ToLower().Equals("system.dbnull") ? null : row[column]), null);  
  23.        }  
  24.        lstEntity.Add(t);  
  25.     }  
  26.     return lstEntity;  
  27.  }