asp.net core postgresql 大数据高性能分页

浪淘沙1年前后端148

 /// <summary>

 /// 分页:返回json格式,参数加密

 /// </summary>

 /// <param name="tbl">表名,Des加密</param>

 /// <param name="flds">读取字段,Des加密:如title,cdt,pv,flg</param>

 /// <param name="orderfld">排序,Des加密:如id desc</param>

 /// <param name="sqlwhere">搜索条件,Des加密:如1=1</param>

 /// <param name="pagesize">分页大小:如10</param>

 /// <param name="pageindex">当前页数:如1</param>

 /// <returns></returns>

 //[QueryParameters]

 //登录判断

 [Authorize]

 [NonUnify]

 [Route("GetPage")]

 [HttpPost]

 public async Task<object> GetPage(string tbl, string flds, string orderfld, string sqlwhere, int pagesize = 15, int pageindex = 1)

 {

     tbl = SecurityHelper.DesDec(tbl);

     flds = SecurityHelper.DesDec(flds);

     orderfld = SecurityHelper.DesDec(orderfld);

     sqlwhere = SecurityHelper.DesDec(sqlwhere);


    


     string sql = "select * from (select row_number() over (order by " + orderfld + ") as rowid, " + flds + " from " + tbl + ") as a where rowid > (" + pagesize + " * (" + pageindex + " - 1)) and rowid <= (" + pagesize + " * " + pageindex + ") and " + sqlwhere;


     var dt = await _db.Ado.GetDataTableAsync(sql);


     ArrayList arrayList = new ArrayList();



     if (dt.Rows.Count > 0)

     {

         for (int i = 0; i < dt.Rows.Count; i++)

         {

             Hashtable ht = new Hashtable();

             for (int j = 0; j < dt.Columns.Count; j++)

             {

                 string ColName = dt.Columns[j].ColumnName;

                 object ColRowData = dt.Rows[i][dt.Columns[j].ColumnName];

                 ht.Add(ColName, ColRowData.ToString());

             }

             await Task.Run(() => arrayList.Add(ht));

         }

     }

     dt.Dispose();


     var TotalPage =await _db.Ado.GetStringAsync("select count(*) from " + tbl + " where " + sqlwhere);


     return new ApiPageResult { statusCode = 200, totaldata = TotalPage, data = arrayList, succeeded = true };

 }


相关文章

JNTemplate 模板标签读取dt数据

一、模板标签using JinianNet.JNTemplate; private readonly SqlSugar.ISqlSugarClient _db;...

ckeditor编辑器

@page @model xxtsoft.Web.Entry.Pages.Index2Model @{ } <script src="~/ckeditor/...

asp.net core MiniExcelLibs 导出excel

public IActionResult OnPostDown() {        DataTable ...

asp.net core razor 读取form中,同一name的值 分解

asp.net core razor 读取form中,同一name的值 分解

@page @model xxtsoft.Web.Entry.Pages.sysadmins.mb.mbModel @{     Layout&...

asp.net core razor onpost

不管 OnGet 填充多少东西OnPost 必须再填一次因为 Razor Pages 不会“记住” ViewModelPOST 后是重新执行一个请求,Model 全部重新创建。不像 WebForms,...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。