在我看来,我有一个输入和选择标签供用户输入开始和结束日期。 提交后,控制器将搜索模型/数据库并返回上述范围内的条目。
在我的数据库中,开始和结束日期写为“nvarchars”,在我的控制器中,它们被视为字符串
代码和图片供参考:
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];
//Sample code to test the start date
viewModel.Tasks = db.Tasks.Where(s => s.StartTime.Contains(start)).ToList();
}
数据库值的片段:
有没有LINQ表达式可以做到这一点?
答案 0 :(得分:2)
由于日期是字符串,除了使用您已建议的内容之外,您没有其他更好的选择:
viewModel.Tasks = db.Tasks.Where(s => s.StartTime.Equals(start)).ToList();
我会使用Equals
,因为这对你来说会更快。使用Contains基本上就像做一个慢得多的T-SQL LIKE
。
SELECT *
FROM Table
WHERE StartDate LIKE 'blah'
使用Equals
将产生以下等效项:
SELECT *
FROM Table
WHERE StartDate = 'blah'
效率更高。