zoukankan      html  css  js  c++  java
  • IList转化为DataSet,解决了System.nullable()的问题

    在做毕业设计时,需要用到这项功能,于是在网上搜索了一段代码,但是后来发现,在处理int类型时,会发生System.nullable的错误,于是自己查阅资料,进行了小小的改动,终于成功。。详细见一下方法。

      public static DataSet ConvertToDataSet<T>(IList<T> list)
            {
                if (list == null || list.Count <= 0)
                {
                    return null;
                }
    
                DataSet ds = new DataSet();
                DataTable dt = new DataTable(typeof(T).Name);
                DataColumn column;
                DataRow row;
    
                System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
    
                foreach (T t in list)
                {
                    if (t == null)
                    {
                        continue;
                    }
    
                    row = dt.NewRow();
    
                    for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
                    {
                        System.Reflection.PropertyInfo pi = myPropertyInfo[i];
    
                        string name = pi.Name;
                       // if (pi.PropertyType == System.Nullable<>)
                       // {
                          //  pi.PropertyType = System.Int32;
                       // }
                        if (dt.Columns[name] == null)
                        {
                            if (pi.PropertyType.IsGenericType && pi.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))//这段是我进行修改和判断的地方
                            {
                                Type[] typeArray = pi.PropertyType.GetGenericArguments();
                                Type baseType = typeArray[0];
                                column = new DataColumn(name, baseType);
                            }
                            else
                            {
                                column = new DataColumn(name, pi.PropertyType);
                            }
                            dt.Columns.Add(column);
                        }
    
                        row[name] = pi.GetValue(t, null);
                    }
    
                    dt.Rows.Add(row);
                }
    
                ds.Tables.Add(dt);
    
                return ds;
            }
  • 相关阅读:
    poj2823单调队列认知
    有关二叉树的三序遍历的题目
    hdu4757 可持续字典树
    ZOJ2532判断边是否是割集中的边
    poj2455 k条路最小化最长边
    乘法逆元模板
    poj1699 KMP+壮压DP
    Innodb存储引擎——非聚集索引
    java集合框架笔记
    jvm垃圾回收
  • 原文地址:https://www.cnblogs.com/chenyready/p/3044890.html
Copyright © 2011-2022 走看看