當我們查詢之前,我們先構造一個查詢物件的輸出DTO,如下圖代碼:
public class TScoreSearchDto { /// <summary> /// 分數 /// </summary> public Int32 FScore { get; set; } /// <summary> /// 學生名稱 /// </summary> public String studentName { get; set; } /// <summary> /// 班級名稱 /// </summary> public String className { get; set; } /// <summary> /// 年級名稱 /// </summary> public String gradeName { get; set; } }
當我們構建完DTO 輸出Dto 后,我就可以pagequery 最后查詢的到資料集(DataTable) 通過 DataTable 的 ToList 擴展方法 輕而易舉的轉換到List 資料集合中,供上層使用,如下代碼的最后一行所示:
public List<TScoreSearchDto> getScoreList() { #region //聚聯條件分頁查詢 var type = 1; //非關鍵代碼,用于下面演示代碼用 var studentname = "H"; //非關鍵代碼,用于下面演示代碼用 var sql = @"SELECT score.FScore,student.FName as studentName,class.FName as className,grade.FName as gradeName FROM dbo.t_StudentScore score LEFT JOIN dbo.t_student student ON score.FStudentId = student.FID LEFT JOIN dbo.t_class class ON student.FClassId=class.FID LEFT JOIN dbo.t_Grade grade ON grade.FID=class.FGradeId "; PageQuery pq = new PageQuery(sql,null); pq.Where("1=1"); if (type == 1) { pq.Where("score.FScore>60 "); } if (type == 2) { pq.Where("score.FScore>60 and score.FScore<80 "); } if (!string.IsNullOrEmpty(studentname)) { pq.Where(" student."FName like '%'+@FScoreName+'%'",new {FScoreName=studentname}}); } //通過ThenAsc 方法指定欄位排序 pq.ThenASC("score.FScore "); //通過ThenDESC 方法指定欄位排序 pq.ThenDESC("student.FName"); //自己直接指定排序欄位和排序關鍵詞 pq.OrderBy("student.FAddTime desc"); //分頁指定 Skip: 當前頁,Take :每頁數量 pq.Skip(1).Take(10); var dt= pq.ToDataTable(); //獲取資料 var studentscount= pq.Count(); //獲取當前條件下的數量 return dt.ToListModel<TScoreSearchDto>(); //ToList<T>() DataTable-->List<T> 的模型轉換 #endregion }
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/249265.html
標籤:.NET技术
上一篇:Bitter.Core系列五:Bitter ORM NETCORE ORM 全網最粗暴簡單易用高性能的 NETCore ORM 之 示例 分頁聚聯查詢
