2015-11-04 92 views
1

我需要一個靜態方法來轉換數據表(動態),以列表(再次動態實體) 這裏是我的代碼 幫助將appereciated轉換DataTable中列出<Entity>(ProjectDracula)

 public static ICollection<System.Data.Entity.Core.Objects.DataClasses.EntityObject> DtToEntity(DataTable DataTable,System.Data.Entity.Core.Objects.DataClasses.EntityObject EntityObject) 
    { 
     ICollection<System.Data.Entity.Core.Objects.DataClasses.EntityObject> _list = null; 
     System.Data.Entity.Core.Objects.DataClasses.EntityObject _tempClass; 
     foreach (DataRow dataRow in DataTable.Rows) 
     { 
      foreach(DataColumn dataColumn in DataTable.Columns) 
      { 
       foreach (var attribute in EntityObject.GetType().GetProperties()) 
       { 
        if (attribute.Name == dataColumn.ColumnName && attribute.GetType().Equals(dataColumn.GetType())) 
        { 
         return _list; 
        } 
       } 
      } 


     } 

回答

1
private static List<T> ConvertDataTable<T>(DataTable dt) 
{ 
    List<T> data = new List<T>(); 
    foreach (DataRow row in dt.Rows) 
    { 
     T item = GetItem<T>(row); 
     data.Add(item); 
    } 
    return data; 
} 

private static T GetItem<T>(DataRow dr) 
{ 
    Type temp = typeof(T); 
    T obj = Activator.CreateInstance<T>(); 

    foreach (DataColumn column in dr.Table.Columns) 
    { 
     foreach (PropertyInfo pro in temp.GetProperties()) 
     { 
      if (pro.Name == column.ColumnName) 
       pro.SetValue(obj, dr[column.ColumnName], null); 
      else 
       continue; 
     } 
    } 
    return obj; 
} 

用法:

List<Student> studentDetails = new List<Student>(); 
studentDetails = ConvertDataTable<Student>(dt); 

來源:http://www.c-sharpcorner.com/UploadFile/ee01e6/different-way-to-convert-datatable-to-list/

+0

非常感謝。 –