上一篇中,我們分析了頁面中的控件和數據綁定中的擴展方法,今天我們看數據的查詢和顯示。其中 ,數據的查詢屬於業務邏輯層(Business),而顯示屬於UI層。
假設我們要根據以下兩個條件進行查詢:
日志分類(ID)
發布時間(范圍)
兩者為“AND”的關系,則查詢可以通過通過擴展IQueryable<Blog>類實現,該功能定義在 BlogExtension類中(位於DongBlog.Business\Blogs\Blog.cs文件中),代碼如下:
1: /// <summary> 2: /// 根據日志分類取得日志 3: /// </summary> 4: /// <param name="query">日志查詢</param> 5: /// <param name="blogClassID">日志分類ID</param> 6: /// <param name="createDataTimeStart">日志發表的起始時間</param> 7: /// <param name="createDataTimeEnd">日志發表的結束時間</param> 8: /// <returns>該分類下的日志</returns> 9: public static List<Blog> GetBlogsBy(this IQueryable<Blog> query, int? blogClassID, DateTime? createDataTimeStart, DateTime? createDataTimeEnd) 10: { 11: if (query == null) 12: throw new ArgumentNullException("query"); 13: 14: var q = query.AsQueryable(); 15: 16: if (blogClassID.HasValue) 17: q = q.Where(b => b.BlogClassID == blogClassID.Value); 18: if (createDataTimeStart.HasValue) 19: q = q.Where(b => b.CreateDateTime > createDataTimeStart.Value); 20: if (createDataTimeEnd.HasValue) 21: q = q.Where(b => b.CreateDateTime < createDataTimeEnd.Value); 22: 23: return q 24: .OrderByDescending(b => b.CreateDateTime) 25: .ToList(); 26: }