当我设置结束日期(例如31.08.2018)时,找不到包含8月31日(包括8月31日)的记录,但它们存在于数据库中(仅包括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 }))
答案 0 :(得分:1)
在您的数据库中似乎有一条记录为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);
答案 1 :(得分:1)
当我们只想比较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;
添加到您的类中。
答案 2 :(得分:0)
当您使用“ aug 31st”作为结束日期时,您实际上是在使用“ aug 31st,midnight”(0:00)。因此,您会错过几乎所有的日期-如您所见。
简单的解决方案:只需添加一天并进行<
比较
代替
samp = samp.Where(s => s.dt_corr <= enddate);
使用
var realend = enddate.Value.AddDays(1);
samp = samp.Where(s => s.dt_corr < realend);