在做系統(tǒng)的時(shí)候,經(jīng)常遇到前臺(tái)錄入一大堆的查詢(xún)條件,然后點(diǎn)擊查詢(xún)提交后臺(tái),在Controller里面生成對(duì)應(yīng)的查詢(xún)SQL或者表達(dá)式,數(shù)據(jù)庫(kù)執(zhí)行再將結(jié)果返回客戶(hù)端。

例如如下頁(yè)面,輸入三個(gè)條件,日志類(lèi)型、開(kāi)始和結(jié)束日期,查詢(xún)后臺(tái)系統(tǒng)操作日志,并顯示。

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

這種類(lèi)似頁(yè)面在系統(tǒng)中還是比較多的,通常情況下,我們會(huì)在cshtml中放上日志類(lèi)型、開(kāi)始、結(jié)束日期這三個(gè)控件,controller的action有對(duì)應(yīng)的三個(gè)參數(shù),然后在action、邏輯層或者倉(cāng)儲(chǔ)層實(shí)現(xiàn)將這三個(gè)參數(shù)轉(zhuǎn)換為linq,例如轉(zhuǎn)成c=>c.BeginDate>=beginDate && c.EndDate < endDate.AddDay(1) && c.OperType == operType。

這里有個(gè)小技巧,就是結(jié)束日期小于錄入的結(jié)束日期+1天。一般大家頁(yè)面中錄入結(jié)束日期的時(shí)候都是只到日期,不帶時(shí)分秒,例如結(jié)束日期為2016年1月31日,endDate 就是2016-01-31。其實(shí)這時(shí)候,大家的想法是到2016年1月31日23:59:59秒止。如果數(shù)據(jù)庫(kù)中存儲(chǔ)的是帶時(shí)分秒的時(shí)間,例如2016-01-31 10:00:00.000,而程序中寫(xiě)的是c.EndDate < endDate的話(huà),那么這個(gè)2016年1月31日零點(diǎn)之后的全不滿(mǎn)足條件。所以,這里應(yīng)該是小于錄入的結(jié)束日期+1。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式