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
  • 相关阅读:
    VMware虚拟机的三种连接方式
    Codeblocks16.01配置wxWidgets3.0.4
    DAO编程(VC6.0中的应用)
    VC++ 中用ado连接数据库
    C中文件的输入输出与C++的文件流
    Cpp中流继承关系
    a标签置灰不可点击
    手动操作数据库
    $.ajaxFileUpload is not a function
    【工具】手机号码、电话号码正则表达式
  • 原文地址:https://www.cnblogs.com/2013likong/p/3484148.html
Copyright © 2011-2022 走看看