• 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
  • 相关阅读:
    B/S架构
    RPC远程过程调用详解
    Ubuntu18.04安装MongoDB
    Python2.X SQLAlchemy @@tx_isolation警告
    Excel单元格内自动换行自动行高,打印预览出现内容缺失解决方案
    Winform应用的多语言设置
    单例模式创建窗口
    相似命名的字符串高效拼接
    利用dynamic动态创建对象
    设置全局快捷键
  • 原文地址:https://www.cnblogs.com/2013likong/p/3484148.html
Copyright © 2020-2023  润新知