我将此代码用于高级搜索
public ActionResult AdvanceSearch(string HeadTitle, string fulltext, string firstdate, string enddate, string newstype)
{
var q = db.Tbl_News.Where(n => n.HeadTitle.Contains(HeadTitle) && n.FullText.Contains(fulltext) && n.Date >= firstdate && n.Date <= enddate);
return PartialView("AdvanceSearch", q);
}
此代码适用于HeadTitle中的搜索和全文,但是当我添加日期时显示错误。
如何在两个日期之间使用此代码进行搜索?
答案 0 :(得分:1)
首先,您的日期参数应为DateTime
类型,
我建议将代码更新为
var q = db.Tbl_News
.Where (n => n.HeadTitle.Contains(HeadTitle)
.Where (n => n.FullText.Contains(fulltext))
.Where (n => n.Date >= firstdate.Date )
.Where (n => n.Date <= enddate.Date);
更具可读性,只比较日期部分(忽略时间)
答案 1 :(得分:1)
如果您不想更改参数类型,,这也没关系。
public ActionResult AdvanceSearch(string HeadTitle, string fulltext, string firstdate, string enddate, string newstype)
{
var q = db.Tbl_News
.Where (n => n.HeadTitle.Contains(HeadTitle)
.Where (n => n.FullText.Contains(fulltext))
.Where (n => n.Date >= DateTime.ParseExact(firstdate, "MM/dd/yyyy", CultureInfo.InvariantCulture))
.Where (n => n.Date <= DateTime.ParseExact(enddate, "MM/dd/yyyy", CultureInfo.InvariantCulture));
}