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
  • 相关阅读:
    染色法判定二分图
    Kruskal算法求最小生成树
    Prim算法求最小生成树
    Floyd算法求多源最短路
    spfa判断负环
    java 线程的使用
    java IO基础
    数据库 EXISTS与NOT EXISTS
    数据库 何为相关查询和不相关查询?
    数据库的基础知识
  • 原文地址:https://www.cnblogs.com/2013likong/p/3484148.html
Copyright © 2011-2022 走看看