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;
        }

    }

  • 相关阅读:
    解决VS2012新建MVC4等项目时,收到加载程序集“NuGet.VisualStudio.Interop…”的错误
    BOM 清除
    sleep和Sleep区别
    出现error: stray ‘357’ in program的根源
    vi 复制或剪切多行超级强大方法
    CentOS乱码解决方法
    VBS实现文本文件按行数拆分的脚本
    python-门户应用状态检查脚本
    HTA+VBS实现的话单核查小工具
    oracle 11g 安装
  • 原文地址:https://www.cnblogs.com/single/p/1533367.html
Copyright © 2011-2022 走看看