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

浪淘沙2年前后端199

 /// <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 };

 }


相关文章

点击按钮,禁用提示,加导出word

@page @model xxtsoft.Web.Entry.Pages.sysadmins.kh.kh_outModel @{     Lay...

asp.net core 图片左下角 加水印

using SixLabors.Fonts; using SixLabors.ImageSharp; using SixLabors.ImageSharp.Drawi...

C#JNTemplate模板引擎,标签指定${set(pagetotal=20)},后端如何获取pagetotal的值

using JinianNet.JNTemplate; class Program {     static void&...

查看ubuntu 是否正确安装asp.net core 8.0

dotnet --list-sdks如果您看到列出的.NET Core 8.0 SDK版本,则表明.NET Core 8.0已正确安装。...

asp.net core多按钮提交实现

<form method="post">     <button type="submit...

asp.net core razor 使用ClosedXML.Excel 导出表格

            using var workbook...

发表评论    

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