zoukankan      html  css  js  c++  java
  • Var To DataTable

    public static DataTable CopyToDataTable<T>(this IEnumerable<T> array)
            {
                var ret = new DataTable();
                foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                {
                    //if (!dp.IsReadOnly)
                    {
                        ret.Columns.Add(dp.Name, dp.PropertyType);
                    }
                }
                foreach (T item in array)
                {
                    var Row = ret.NewRow();
                    foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T)))
                    {
                        //if (!dp.IsReadOnly)
                        {
                            Row[dp.Name] = dp.GetValue(item);
                        }
                    }
                    ret.Rows.Add(Row);
                }
                return ret;
            }
            static public DataTable ToDataTable<T>(this IEnumerable<T> varlist)
            {
    
                DataTable dtReturn = new DataTable();
    
                // column names
    
                PropertyInfo[] oProps = null;
    
                // Could add a check to verify that there is an element 0
    
                foreach (T rec in varlist)
                {
    
                    // Use reflection to get property names, to create table, Only first time, others will follow
    
                    if (oProps == null)
                    {
    
                        oProps = ((Type)rec.GetType()).GetProperties();
    
                        foreach (PropertyInfo pi in oProps)
                        {
    
                            Type colType = pi.PropertyType; if ((colType.IsGenericType) && (colType.GetGenericTypeDefinition() == typeof(Nullable<>)))
                            {
    
                                colType = colType.GetGenericArguments()[0];
    
                            }
    
                            dtReturn.Columns.Add(new DataColumn(pi.Name, colType));
    
                        }
    
                    }
    
                    DataRow dr = dtReturn.NewRow(); foreach (PropertyInfo pi in oProps)
                    {
    
                        dr[pi.Name] = pi.GetValue(rec, null) == null ? DBNull.Value : pi.GetValue(rec, null);
    
                    }
    
                    dtReturn.Rows.Add(dr);
    
                }
    
                return (dtReturn);
    
            }
    Var 转 DataTable
  • 相关阅读:
    《朗读手册》【美】吉姆·崔利斯
    《web全栈工程师的自我修养》 读书笔记
    2016/06 书单
    PostgreSQL数据库的安装
    MySQL数据库的安装
    异构数据库迁移——DATAX
    初探12C碰到的那些“坑”
    关于Ubuntu 16.04 pip安装Docker-Compose
    启动与关闭容器
    容器标识符
  • 原文地址:https://www.cnblogs.com/2013likong/p/3484148.html
Copyright © 2011-2022 走看看