zoukankan      html  css  js  c++  java
  • DataTable到范型转换

    /// <summary>
    /// 适合于实体类和DataTable对应的情况
    /// </summary>

    public class ConvertExtend
    {
        //将泛型类转换成DataTable
        public static DataTable ToDataTable<T>(List<T> entitys)
        {
            DataTable dtResult = new DataTable();
            if (entitys == null || entitys.Count < 1)
            {
                throw new Exception("需转换的集合为空");
            }
            Type entityType = entitys[0].GetType();
            List<PropertyInfo> propertyInfoList = entityType.GetProperties().ToList<PropertyInfo>();
            foreach (PropertyInfo item in propertyInfoList)
            {
                dtResult.Columns.Add(new DataColumn(item.Name, item.PropertyType));
            }
            foreach (T entity in entitys)
            {
                DataRow dr = dtResult.NewRow();
                foreach (PropertyInfo item in propertyInfoList)
                {
                    dr[item.Name] = item.GetValue(entity, null);
                }
                dtResult.Rows.Add(dr);
            }
            return dtResult;
        }
        //将泛型类转换成DataTable
        public static IList<T> ToList<T>(DataTable dt)
        {
            List<T> list = new List<T>();
            //T model = default(T);
            for (int iRow = 0; iRow < dt.Rows.Count; iRow++)
            {
                DataRow dr = dt.Rows[iRow];
                T t = (T)System.Activator.CreateInstance(typeof(T));
                List<PropertyInfo> listPropertyInfo = t.GetType().GetProperties().ToList<PropertyInfo>();
                foreach (PropertyInfo item in listPropertyInfo)
                {
                    if (dr[item.Name] != DBNull.Value)
                    {
                        item.SetValue(t, dr[item.Name], null);
                    }
                    else
                    {
                        item.SetValue(t, (string)null, null);
                    }
                }
                list.Add(t);
            }
            return list;
        }

    }

  • 相关阅读:
    Medium | LeetCode 179. 最大数 | 排序
    Medium | LeetCode 448. 找到所有数组中消失的数字 | 原地Hash
    Medium | LeetCode 78. 子集 | 回溯
    Medium | LeetCode 39. 组合总和 | 回溯
    js上传头像进行图片压缩
    js 点击按钮复制文本
    eclipse下载
    gulp打包修改配置文件
    vuejs之过滤器(filters)的使用
    关于layui弹出层关闭之后,弹出的dom显示问题
  • 原文地址:https://www.cnblogs.com/single/p/1533367.html
Copyright © 2011-2022 走看看