ASP.NET MVC 5中两个日期之间的高级搜索

时间:2016-09-17 11:12:35

标签: asp.net-mvc asp.net-mvc-5.2

我将此代码用于高级搜索

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中的搜索和全文,但是当我添加日期时显示错误。

如何在两个日期之间使用此代码进行搜索?

2 个答案:

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