上一篇中,我們分析了頁面中的控件和數據綁定中的擴展方法,今天我們看數據的查詢和顯示。其中 ,數據的查詢屬於業務邏輯層(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: }