zoukankan      html  css  js  c++  java
  • C# IList<T>转为DataTable

    public class WebUtil
    {
    /// <summary>
    /// 转换IList<T>为DataTable/// </summary> /// <typeparam name="T">泛型类型</typeparam> /// <param name="list">泛型List集合</param> /// <returns>Datatable 对象</returns>public static DataTable ConvertToDataTable<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 DataTable CreateTable<T>()
    
     {
    Type entityType = typeof(T);DataTable table = new DataTable(entityType.Name);PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(entityType);
    
    
    
    foreach (PropertyDescriptor prop in properties)
    
     {
    //解决 DataSet不支持System.Nullable<>”的异常Type colType = prop.PropertyType;if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
     {
     colType = colType.GetGenericArguments()[0];
     }
     table.Columns.Add(prop.Name, colType);
     }
    
    return table;
    
     }
    }

    //在调用上面的那个类的方法时出现 “DataSet不支持System.Nullable<>”的异常。下面是调用的方式。

    IList<PersonInfo> list = GetPersonInfoList();//这是我的列表获取方法。。这里没问题的!!有数据得到!
    var dt = WebUtil.ConvertTo<PersonInfo>(list);

  • 相关阅读:
    【2020-04-03】多注意一下自己闲下来的思绪
    vue 去哪网项目 学习笔记(一)
    数据分析相关的内容
    vue 自学项目笔记
    vue 所有的指令
    vue 自学笔记(5) 列表渲染
    vue 自学笔记(4): 样式绑定与条件渲染
    vue 自学笔记(三) 计算属性与侦听器
    自学vue笔记 (二) : 实例与生命周期
    杜教BM模板
  • 原文地址:https://www.cnblogs.com/z_lb/p/3419646.html
Copyright © 2011-2022 走看看