converting DataTable to List (ProjectDracu

2019-07-07 13:33发布

问题:

I need a static method to convert DataTables(dynamic) to List(again dynamic Entity) here is my code help would be appereciated

        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;  
} 

Usage:

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

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