How do you convert a DataTable into a generic list?

前端 未结 27 2884
后悔当初
后悔当初 2020-11-22 17:04

Currently, I\'m using:

DataTable dt = CreateDataTableInSomeWay();

List list = new List(); 
foreach (DataRow dr in dt.Rows)
{
          


        
27条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-11-22 17:50

    Use Extension :

    public static class Extensions
    {
        #region Convert Datatable To List
        public static IList ToList(this DataTable table) where T : new()
        {
            IList properties = typeof(T).GetProperties().ToList();
            IList result = new List();
    
            foreach (var row in table.Rows)
            {
                var item = CreateItemFromRow((DataRow)row, properties);
                result.Add(item);
            }
            return result;
        }
        private static T CreateItemFromRow(DataRow row, IList properties) where T : new()
        {
            T item = new T();
            foreach (var property in properties)
            {
                property.SetValue(item, row[property.Name], null);
            }
            return item;
        }
        #endregion
    }
    

提交回复
热议问题