2016-09-17 5 views
1

Я использую этот код для предварительного поискаРасширенный поиск между двумя датами в ASP.NET MVC 5

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 и полный текст, но когда я добавляю дату показать мне ошибку.

Как использовать этот код для поиска между двумя датами?

+1

Начните с создания ваших параметров 'DateTime' (не' string') –

+0

@StephenMuecke благодарит. это работает – Kianoush

ответ

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

Если вы не хотите изменять тип параметра , это тоже нормально.

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