.net反射实例(优化后)

public List<Model.Ppt> Select(string table_Name, string Fields, string limit_Condition, string order_By, string order_Direction, int page_Size, int current_Page)
        {
            SqlParameter[] para = new SqlParameter[7];
            para[0] = new SqlParameter("@TableName", table_Name);
            para[1] = new SqlParameter("@ReFieldsStr", Fields);
            para[2] = new SqlParameter("@OrderString", order_By);
            para[3] = new SqlParameter("@OrderDirection", order_Direction);
            para[4] = new SqlParameter("@WhereString", limit_Condition);
            para[5] = new SqlParameter("@PageSize", page_Size);
            para[6] = new SqlParameter("@PageIndex ", current_Page);

            List<Model.Ppt> list = new List<Model.Ppt>();
            Hashtable hashValue = new Hashtable();
            Model.Ppt model = new Model.Ppt();
            object temp=new Model.Ppt();
            int fieldNum = 18;
            PropertyInfo[] infos = model.GetType().GetProperties();
            string[] field = Fields.Split(',');

            using (SqlDataReader reader = SQLHelper.ExecuteReader(conn, CommandType.StoredProcedure, "PROCE_PAGECHANGE", para))
            {
                while (reader.Read())
                {
                    hashValue = new Hashtable();
                    temp = new Model.Ppt();
                    foreach (string fName in field)
                    {
                        for (int i = 0; i < fieldNum; i++)
                        {
                            if ("*" == fName)
                            {
                                if (DBNull.Value != reader[infos.Name])
                                {
                                    hashValue.Add(infos.Name, reader[infos.Name]);
                                    infos.SetValue(temp, hashValue[infos.Name], null);
                                }
                            }
                            else
                            {
                                if (infos.Name == fName)
                                {
                                    if (DBNull.Value != reader[infos.Name])
                                    {
                                        hashValue.Add(infos.Name, reader[infos.Name]);
                                        infos.SetValue(temp, hashValue[infos.Name], null);
                                    }
                                    break;
                                }
                            }
                        }
                    }
                    list.Add((Model.Ppt)temp);
                }
            }
            return list;
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值