當我們查詢之前,我們先構造一個查詢對象的輸出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 }