Friday 8 September 2017

convert from list to datatable in C#

DataTable employeeDt = employeeList.ConvertToDataTable();
________________________________________________________________
  1. public static DataTable ConvertToDataTable<T>(List<T> list)  
  2. {  
  3. DataTable tempDt = new DataTable(typeof(T).Name);  
  4.   
  5. //return all properties  
  6. var [] propInfo = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);  
  7. foreach (var prop in propInfo)  
  8. {  
  9. //defining type  
  10. var type = (prop.PropertyType.IsGenericType && prop.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>) ? Nullable.GetUnderlyingType(prop.PropertyType) : prop.PropertyType);  
  11. //set the column name  
  12. tempDt.Columns.Add(prop.Name, type);  
  13. }  
  14. foreach (var item in list)  
  15. {  
  16. var values = new object[propInfo.Length];  
  17. for (int i = 0; i < propInfo.Length; i++)  
  18. {  
  19. //prepare for datatable  
  20. values[i] = propInfo[i].GetValue(item, null);  
  21. }  
  22. tempDt .Rows.Add(values);  
  23. }  
  24. return dataTable;  
  25. }  
_______________________________________________________________________________________________
 Convert from IEnumerable to datatable in C#
  1. public static DataTable ConvertToDataTable<T>(this IEnumerable<T> dataCollection)  
  2.     {  
  3.         PropertyDescriptorCollection propertiesDC =  
  4.             TypeDescriptor.GetProperties(typeof(T));  
  5.         DataTable dt = new DataTable();  
  6.         foreach (var item in propertiesDC)  
  7.             dt.Columns.Add(prop.Name, Nullable.GetUnderlyingType(item.PropertyType) ?? item.PropertyType);  
  8.         foreach (var row in dataCollection)  
  9.         {  
  10.             DataRow r = table.NewRow();  
  11.             foreach (var p in propertiesDC)  
  12.                 r[p.Name] = p.GetValue(item) ?? DBNull.Value;  
  13.             table.Rows.Add(r);  
  14.         }  
  15.         return dt;  
  16.     }  
_____________________________________________________________________
Create dataTable in C#
  1. var myTable = new DataTable();  
  2.             myTable.Columns.Add("Id", typeof(int));             
  3.             myTable.Columns.Add("Name", typeof(string));  

No comments:

Post a Comment