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
  • 相关阅读:
    Kth element of Two Sorted Arrays
    Populating Next Right Pointers in Each Node I && II
    Average waiting time of SJF and Round Robin scheduling
    LRU Cache
    Calculate H-index
    Get Level of a node in a Binary Tree
    Two Sum
    Intersection of Two Linked Lists
    Symmetric Tree
    Lowest Common Ancestor of Binary (Search) Tree
  • 原文地址:https://www.cnblogs.com/2013likong/p/3484148.html
Copyright © 2011-2022 走看看