datatable转model的工具类

本文介绍了一种将DataTable转换为对象模型的方法。通过提供的通用类DBTableHelper,可以方便地实现从数据库查询结果到业务对象的映射。该方法适用于.NET平台,并考虑了不同类型字段的转换处理。
摘要由CSDN通过智能技术生成

这里写自定义目录标题

 public class DBTableHelper<T>
    {
        /// <summary>
        /// datatable 转model
        /// </summary>
        /// <param name="table"></param>
        /// <returns></returns>
        public static List<T> DataTableToModel(DataTable table)
        {
            List<T> data = new List<T>();
            foreach (DataRow row in table.Rows)
            {
                T item = GetItem<T>(row);
                data.Add(item);
            }
            return data;
        }
    /// <summary>
    /// 将DataRow转换成实体对象
    /// </summary>
    /// <typeparam name="T"></typeparam>
    /// <param name="dr"></param>
    /// <returns></returns>
    private static T GetItem<T>(DataRow dr)
    {
        try
        {
            Type temp = typeof(T);
            T obj = Activator.CreateInstance<T>();
            foreach (DataColumn column in dr.Table.Columns)
            {
                foreach (PropertyInfo pro in temp.GetProperties())
                {
                    if (pro.Name.ToLower() == column.ColumnName.ToLower())
                    {
                        var VAL = dr[column.ColumnName];
                        //var type = VAL.GetType();
               
                        bool bol =typeof(Int64) == VAL.GetType();  
                        bool str=typeof(DBNull) ==pro.Name.GetType();
                        bool date = typeof(MySqlDateTime) == VAL.GetType();

                        if (VAL == DBNull.Value)
                        {
                       
                            pro.SetValue(obj, null, null);
                                                       
                            break;
                        }
                        else
                        {
                            //如果是datetime
                            if (date)
                            {
                                VAL = VAL.ToString();
                            }
                            pro.SetValue(obj, bol? Convert.ToInt32(VAL) : VAL, null);
                            break;
                        }
                    }
                }
            }
            return obj;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值