c# 将数据库中值一次赋给MODEL

 /// <summary>

        /// DataTable中的每一列赋值给model中的同名属性

        /// DataTable中只有一行数据

        /// </summary>

        /// <typeparam name="T">泛型:model的类型</typeparam>

        /// <param name="objmodel">model的实例</param>

        /// <param name="dtInfo">DataTable表</param>

        public static void TableToModel<T>(T objmodel, DataTable dtInfo)

        {

            //获取model的类型

            Type modelType = typeof(T);

 

            //获取model中的属性

            PropertyInfo[] modelpropertys = modelType.GetProperties();

 

            //遍历DataTable的每一列

            for (Int32 i = 0; i < dtInfo.Columns.Count; i++)

            {

                //遍历model的每一个属性

                foreach (PropertyInfo pi in modelpropertys)

                {

                    String name = pi.Name;  //获取属性名称

                    //若model属性名称与表中的列名相同

                    if (name == dtInfo.Columns[i].ColumnName)

                    {

                        object value = null ;

                        //获取表中该列对应的数据

                        if (dtInfo.Columns[i].DataType == typeof(string))

                        {

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToString(null);

                            else

                            value = dtInfo.Rows[0][i].ToString();

                        }

                        

                        //判断是否为bool类型

                        if (dtInfo.Columns[i].DataType == typeof(bool))

                        {

 

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToBoolean(null);

                            else

                                value = Convert.ToBoolean(dtInfo.Rows[0][i]);

                        }

                        //判断是否为DateTime类型

                        else if (dtInfo.Columns[i].DataType == typeof(DateTime) )

                        {

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToDateTime(null);

                            else

                            value = Convert.ToDateTime(dtInfo.Rows[0][i]);

                        }

                        //判断是否为int类型

                        else if (dtInfo.Columns[i].DataType == typeof(int) )

                        {

                            

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToInt32(null);

                            else

                            value = Convert.ToInt32(dtInfo.Rows[0][i]);

                        }

                        //判断是否为float类型

                        else if (dtInfo.Columns[i].DataType == typeof(Double) )

                        {

                            

                            

                            if (dtInfo.Rows[0][i] == System.DBNull.Value)

                                value = Convert.ToDouble(null);    

                                //value = float.Parse(null);

                            else

                                value = Convert.ToDouble(dtInfo.Rows[0][i]);

                                //value = float.Parse(dtInfo.Rows[0][i].ToString());

 

                        }

                        //将表中该列下的数据赋值给model中的同名属性

                        modelType.GetProperty(name).SetValue(objmodel, value, null);

                    }

                }

            }

        }

 

 

调用方法TableToModel<Recurrencecs>(Conf.currentPatient.recurrencecs, dtrecurrencecs);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值