zoukankan      html  css  js  c++  java
  • 利用反射把DataTable自动赋值到Model实体(自动识别数据类型)

    转:http://www.cnblogs.com/the7stroke/archive/2012/04/22/2465591.html

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Data;

    using System.Reflection;

    namespace System.Data

    {

        public static class DataTableHelper

        {

            #region 利用反射把DataTable的数据写到单个实体类

            public static T ToSingleEntity<T>(this System.Data.DataTable dtSource)

            {

                if (dtSource == null)

                {

                    return default(T);

                }

                if (dtSource.Rows.Count != 0)

                {

                    Type type = typeof(T);

                    Object entity = Activator.CreateInstance(type);         //创建实例               

                    foreach (PropertyInfo entityCols in type.GetProperties())

                    {

                        if (!string.IsNullOrEmpty(dtSource.Rows[0][entityCols.Name].ToString()))

                        {

                            entityCols.SetValue(entity, Convert.ChangeType(dtSource.Rows[0][entityCols.Name], entityCols.PropertyType), null);

                        }

                    }

                    return (T)entity;

                }

                return default(T);

            }

            #endregion

            #region 利用反射把DataTable的数据写到集合实体类里

            public static List<T> ToListEntity<T>(this System.Data.DataTable dtSource)

            {

                if (dtSource == null)

                {

                    return null;

                }

                List<T> list = new List<T>();

                Type type = typeof(T);

                foreach (DataRow dataRow in dtSource.Rows)

                {

                    Object entity = Activator.CreateInstance(type);         //创建实例               

                    foreach (PropertyInfo entityCols in type.GetProperties())

                    {

                        if (!string.IsNullOrEmpty(dataRow[entityCols.Name].ToString()))

                        {

                            entityCols.SetValue(entity, Convert.ChangeType(dataRow[entityCols.Name], entityCols.PropertyType), null);

                        }

                    }

                    list.Add((T)entity);

                }

                return list;

            }

            #endregion

        }

    }

  • 相关阅读:
    0909初识操作系统
    实验四主存空间的分配和回收
    实验一 DOS命令解释程序的编写
    0909关于操作系统
    实验四主存空间的分配和回收
    实验3评价
    实验一 DOS命令解释程序的编写
    实验三、进程调度模拟程序实验
    实验二、作业调度实验
    0909 第一次上机课之《为什么学操作系统?》
  • 原文地址:https://www.cnblogs.com/jackljf/p/4768614.html
Copyright © 2011-2022 走看看