zoukankan      html  css  js  c++  java
  • 用泛型做的分页类

    /// <summary>
            /// 分页
            /// </summary>
            /// <param name="num">每页的数量</param>
            /// <param name="page">页码</param>
            /// <param name="model">参数列表(用于查询)</param>
            /// <returns></returns>
            public static List<T> GetPagers(int num, int page, T model)
            {
                List<T> tList = new List<T>();
                string name = new T().GetType().Name;
                PropertyInfo[] proList = model.GetType().GetProperties();
                string sqlStr = "select top " + num + "  * from " + name;
                string whereStr = " ";
                foreach (PropertyInfo pi in proList)
                {
                    if (DbHelperSQL.IsPrimaryKey(pi.Name, name) == true)
                    {
                        sqlStr = sqlStr + " where " + pi.Name + " not in (select top (" + num + " * (" + page + "-1))" + pi.Name + " from " + name + " order by OrderDate desc)";
                    }
                }
    
    
                foreach (PropertyInfo pi in proList)
                {
                    if (pi.GetValue(model, null) != null && DbHelperSQL.IsPrimaryKey(pi.Name, name) == false)
                    {
                        string piValue = pi.GetValue(model, null).ToString();
                        if (piValue != "False" && piValue != "0001/1/1 0:00:00" && piValue != "0")
                        {
                            whereStr += " and " + pi.Name + "='" + pi.GetValue(model, null).ToString() + "' order by OrderDate desc";
                        }
                    }
                }
    
                string sql = sqlStr + whereStr;
                DataTable dt = DbHelperSQL.Query(sql).Tables[0];
    
    
                foreach (DataRow dr in dt.Rows)
                {
                    T t = new T();
                    PropertyInfo[] list = t.GetType().GetProperties();
                    foreach (PropertyInfo pi in list)
                    {
                        string piName = pi.Name;
                        if (dt.Columns.Contains(piName))
                        {
                            if (!pi.CanWrite) continue;
                            object value = dr[piName];
                            if (value != DBNull.Value)
                                pi.SetValue(t, value, null);
                        }
                    }
                    tList.Add(t);
                }
                return tList;
            }
    

      

  • 相关阅读:
    linux学习笔记--20150122
    破解LR11 sentinel stage failed
    Linux部署环境初学(Resin、jdk)
    MongoDB操作
    TestNG
    在iOS8 下用Swift 创建自定义的键盘
    iOS 8下简单,可交互式的通知
    设计模式:策略模式
    用Swift创建一个自定义,可调整的控件
    iOS7状态栏上有趣的渐变遮罩
  • 原文地址:https://www.cnblogs.com/liuchang/p/3990615.html
Copyright © 2011-2022 走看看