[英]C#: get database records within date range
昨天我问了一个问题,我必须在给定的日期范围内返回数据库记录。 在昨天的问题中,我曾说过,在联系数据库管理员之后,数据库表中的日期为“ nvarchar”类型。
现在,类型已更改为“ DateTime”类型
因此,我正在寻找一个Linq表达式来返回给定日期范围内的数据库记录。 上一个问题链接: 返回日期范围内的数据库结果
码:
public ActionResult timePeriod(string time)
{
//Start: month, day, year End: month, day, year --> Numeric values
string[] times = time.Split(',');
string start = times[0] + " " + times[1] + " " + times[2];
string end = times[3] + " " + times[4] + " " + times[5];
var sDate = DateTime.Parse(start);
var eDate = DateTime.Parse(end);
//viewModel.Tasks = db.Tasks. //Linq expression to return values withing range.
viewModel.EngineerSkills = db.EngineerSkills.ToList();
viewModel.Categories = db.TaskCategories.ToList();
gatherInfo(viewModel);
gatherXML();
timeRestrictions(viewModel);
gatherMapPositions(viewModel);
return View("Index", viewModel);
}
我现在不知道我是否理解您的问题或尝试该代码
var query = (from a in announcements
where (a.Begins <= RightNow) && (a.Expires >= RightNow)
select a).ToList();
//previous code
.....
var viewModelDates = viewModel.Where(p=>p.StartTime >=sDate && p.EndTime<=eDate);
return View("Index", viewModelDates.ToList());
您应该检查StartTime>=sDate and p.EndTime<=endTime
。 这应该返回正确的值。 希望您有有效的sDate
和eDate
。
请尝试以下方法:
viewModel.Tasks = db.Tasks.Where(s => DbFunctions.TruncateTime(s.StartTime) == DbFunctions.TruncateTime(sDate)).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.