當我設置結束日期時,例如 31.08.2018,沒有找到包含 8 月 31 日的記錄,但它們存在于 DB 中,直到 8 月 30 日為止。我需要一個帶有每月第 31 天的日期顯示。模型中的日期//...public Nullable<System.DateTime> dt_corr { get; set; }//...控制器public ActionResult Index(DateTime? startdate, DateTime? enddate, int? page){ var samp = from s in db.Samples select s; if (startdate != null) // also tried startdate.HasValue { samp = samp.Where(s => s.dt_corr >= startdate); //also tried startdate.Value ViewBag.StartDate = startdate; } if (enddate != null)// also tried enddate.HasValue { samp = samp.Where(s => s.dt_corr <= enddate); // also tried enddate.Value , no difference ViewBag.EndDate = enddate; { int pageSize = 10; int pageNumber = (page ?? 1); return View(sampl.ToPagedList(pageNumber, pageSize)); }看法 //... @using (Html.BeginForm("Index", "Samples", FormMethod.Get)) { <p> Date @Html.Label("StartDate", "Start Date:") <input class="startdate" id="startdate" name="startdate" type="date" value=""> @Html.Label("EndDate", "Final Date:") <input class="enddate" id="enddate" name="enddate" type="date" value=""> // in the example class="startdate" too, no difference <input type="submit" value="Search"/> </p> } // ... Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount @Html.PagedListPager(Model, page => Url.Action("Index", new { page, startdate = ViewBag.StartDate, enddate = ViewBag.EndDate }))
3 回答

瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
我們應該Time
從DateTime
我們想要比較的時候開始截斷Date
,所以你可以像這樣使用EntityFuctions.TruncateTime()方法:
samp = samp.Where(s => EntityFunctions.TruncateTime(s.dt_corr) <= EntityFunctions.TruncateTime(enddate));
EntityFunctions
放置在System.Data.Objects
命名空間中,因此添加using System.Data.Objects;
到您的類中。

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
似乎在您的數據庫中會有一條記錄,dt_corr = "2018-08-31 12:33:32.130"
并且您要與之比較的是enddate = "2018-08-31 00:00:00.000"
. 所以那些記錄不會出現。
嘗試如下。
samp = samp.Where(s => s.dt_corr != null && s.dt_corr.Value.Date <= enddate.Value.Date);

翻閱古今
TA貢獻1780條經驗 獲得超5個贊
當您使用“8 月 31 日”作為結束日期時,您實際上是在使用“8 月 31 日,午夜”(0:00)。所以你幾乎錯過了所有的日期 - 正如你發現的那樣。
簡單的解決方案:只需添加一天并使用<比較
代替
samp = samp.Where(s => s.dt_corr <= enddate);
利用
var realend = enddate.Value.AddDays(1);
samp = samp.Where(s => s.dt_corr < realend);
- 3 回答
- 0 關注
- 141 瀏覽
添加回答
舉報
0/150
提交
取消