源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

DataTables List互相转换的实现类示例

  • 时间:2022-10-06 12:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:DataTables List互相转换的实现类示例
[u]复制代码[/u] 代码如下:
public static class DataTableHelper     {         public static DataTable ConvertTo<T>(IList<T> list)         {             DataTable table = CreateTable<T>();             Type entityType = typeof(T);             PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);             foreach (T item in list)             {                 DataRow row = table.NewRow();                 foreach (PropertyDescriptor prop in properties)                     row[prop.Name] = prop.GetValue(item);                 table.Rows.Add(row);             }             return table;         }         public static IList<T> ConvertTo<T>(IList<DataRow> rows)         {             IList<T> list = null;             if (rows != null)             {                 list = new List<T>();                 foreach (DataRow row in rows)                 {                     T item = CreateItem<T>(row);                     list.Add(item);                 }             }             return list;         }         public static IList<T> ConvertTo<T>(DataTable table)         {             if (table == null)                 return null;             List<DataRow> rows = new List<DataRow>();             foreach (DataRow row in table.Rows)                 rows.Add(row);             return ConvertTo<T>(rows);         }         //Convert DataRow into T Object         public static T CreateItem<T>(DataRow row)         {             string columnName;             T obj = default(T);             if (row != null)             {                 obj = Activator.CreateInstance<T>();                 foreach (DataColumn column in row.Table.Columns)                 {                     columnName = column.ColumnName;                     //Get property with same columnName                     PropertyInfo prop = obj.GetType().GetProperty(columnName);                     try                     {                         //Get value for the column                         object value = (row[columnName].GetType() == typeof(DBNull))                         ? null : row[columnName];                         //Set property value                         if (prop.CanWrite)    //判断其是否可写                             prop.SetValue(obj, value, null);                     }                     catch                     {                         throw;                         //Catch whatever here                     }                 }             }             return obj;         }         public static DataTable CreateTable<T>()         {             Type entityType = typeof(T);             DataTable table = new DataTable(entityType.Name);             PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);             foreach (PropertyDescriptor prop in properties)                 table.Columns.Add(prop.Name, prop.PropertyType);             return table;         }     }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部