ASP.NET MVC 实体框架查询搜索



当数据库中有两列(Movie_titleRelease_Date(时,如何从SQL数据库中的单个输入(如Hulk 2003(中搜索数据。

需要明确的是,Movie_title列仅包含电影的名称,该电影的发布日期是列Release_Date

我试过

public ActionResult Search(string search)
{
if (search == null)
{
return View("Index");
}
var Movie = db.Movies.Where(m => m.Movie_title .Contains(search) || 
m.Release_date.Contains(search))
.ToList();
return View(Movie);
}

试试:

if (string.IsNullOrWhiteSpace(search))
{
return View("Index");
}
string digit = new String(search.Where(Char.IsDigit).ToArray());
string letter = new String(search.Where(Char.IsLetter).ToArray());
var Movies = db.Movies.Where(m => m.Movie_title.Contains(letter) || m.Release_date.Contains(digit)).ToList();//if Release_Date type is string 

//for datetime type(just for year)
var Movies = db.Movies.Where(m => m.Movie_title.Contains(letter) || m.Release_date.Year==digit).ToList();
}

我设法找到了解决方案,如果您有更好的解决方案,请将其发布;)

public ActionResult Search(string search)
{
int year = 0;
string title = string.Empty;
string yearparse = string.Empty;
if (string.IsNullOrWhiteSpace(search))
{
return View("Index");
}
string movieName = search;
string movieYear = search;
for (int i = 0; i < movieName.Length; i++)
{
if (char.IsLetter(movieName[i]))
{
title += movieName[i];
}
}
for (int i = 0; i < movieYear.Length; i++)
{
if (char.IsDigit(movieYear[i]))
{
yearparse += movieYear[i];
year = int.Parse(yearparse);
}
}
var Movies = db.Movies.Where(m => m.Movie_Title.Contains(title) && m.Release_date.Contains(year.ToString())).ToList();
return View(Movies);
}

最新更新