【问题标题】:C#: get database records within date rangeC#:获取日期范围内的数据库记录
【发布时间】:2014-12-03 15:22:19
【问题描述】:

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

现在类型已更改为类型“日期时间”

因此,我正在寻找一个 Linq 表达式来返回给定日期范围内的数据库记录。 上一题链接: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);
}

【问题讨论】:

    标签: c# linq model date-range


    【解决方案1】:
    //previous code
    .....
    var viewModelDates = viewModel.Where(p=>p.StartTime >=sDate && p.EndTime<=eDate);
    return View("Index", viewModelDates.ToList());
    

    您应该检查StartTime&gt;=sDate and p.EndTime&lt;=endTime 的位置。这应该会返回正确的值。我希望你有有效的sDateeDate

    【讨论】:

    • 谢谢!没想到我做的一些研究会这么容易!
    【解决方案2】:

    我现在不明白你的问题,试试这个代码

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

    【讨论】:

    • 数据库中的日期磁带是什么
    • 其中 t.date >= new DateTime(2007,9,9) && t.date
    【解决方案3】:

    请试试这个:

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

    【讨论】:

    • 这只会获取开始日期的任务。不是解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    相关资源
    最近更新 更多