C#:获取日期范围内的数据库记录

时间:2014-12-03 15:22:20

标签: c# linq model date-range

昨天我问了一个问题,我必须在给定的日期范围内返回数据库记录。 在昨天的问题中,我曾说过在数据库表中,日期是'nvarchar'类型,在联系数据库管理员之后。

现在已将类型更改为键入'DateTime'

因此,我正在寻找一个Linq表达式来返回给定日期范围内的DB记录。 上一个问题链接:Return DB results within Date Range

代码:

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);
}

3 个答案:

答案 0 :(得分:1)

我现在不知道如果我没有解决你的问题或者没有,请尝试使用此代码

var query = (from a in announcements
         where (a.Begins <= RightNow) && (a.Expires >= RightNow)
         select a).ToList();

答案 1 :(得分:1)

//previous code
.....
var viewModelDates = viewModel.Where(p=>p.StartTime >=sDate && p.EndTime<=eDate);
return View("Index", viewModelDates.ToList());

您应该检查StartTime>=sDate and p.EndTime<=endTime的位置。这应该返回正确的值。我希望您有效sDateeDate

答案 2 :(得分:0)

请试试这个:

viewModel.Tasks = db.Tasks.Where(s => DbFunctions.TruncateTime(s.StartTime) == DbFunctions.TruncateTime(sDate)).ToList();