zoukankan      html  css  js  c++  java
  • 泛型和DataTable的属性

    泛型转DataTable

    public DataTable ToDataTable<TResult>(this IEnumerable<TResult> value) where TResult : class
    {
            //创建属性的集合
            List<PropertyInfo> pList = new List<PropertyInfo>();
            Type type = typeof(TResult);
            DataTable dt = new DataTable();
            Array.ForEach<PropertyInfo>(type.GetProperties(), p => { pList.Add(p); dt.Columns.Add(p.Name, p.PropertyType); });
            foreach (var item in value)
            {
                  //创建一个DataRow实例
                    DataRow row = dt.NewRow();
                    pList.ForEach(p => row[p.Name] = p.GetValue(item, null));
                    dt.Rows.Add(row);
            }
            return dt;
    }

    按着模型设置datatable

     public DataTable ConvertToDataTable<T>(List<ColunmData> colunmDatas, List<T> data)
            {
                var dataTable = new DataTable();
                foreach (var it in colunmDatas)
                {
                    dataTable.Columns.Add(new DataColumn(it.colunmEnglish, Type.GetType(it.dataType)));
                }
                DataColumnCollection colunms = dataTable.Columns;//datatable的属性值
                //修改列属性
                foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T)))// 获取泛型的属性值
    {
    if (colunms.Contains(pd.Name))//存在该字段就赋值 { dataTable.Columns[pd.Name].DataType = pd.PropertyType; } } foreach (T it in data) { DataRow Row = dataTable.NewRow(); foreach (PropertyDescriptor pd in TypeDescriptor.GetProperties(typeof(T))) { if (colunms.Contains(pd.Name))//存在该字段就赋值 { Row[pd.Name] = pd.GetValue(it); } } dataTable.Rows.Add(Row); } return dataTable; }
  • 相关阅读:
    [Beta]Scrum Meeting#1
    Alpha阶段事后分析
    Alpha阶段项目展示
    Alpha阶段测试报告
    Beta阶段测试报告
    【Beta阶段】第九次Scrum Meeting
    压力测试报告
    [技术博客]几种网站压力测试工具调研与使用
    【Beta阶段】第八次Scrum Meeting
    【Beta阶段】第七次Scrum Meeting
  • 原文地址:https://www.cnblogs.com/shuaimeng/p/11504575.html
Copyright © 2011-2022 走看看