ASP.NET MVC Entity Framework запрос поиска - PullRequest
0 голосов
/ 20 октября 2018

Как я могу искать данные из одного ввода, такого как Hulk 2003, из базы данных SQL, когда в базе данных есть два столбца (Movie_title и Release_Date).

Просто чтобы быть чистым столбец 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);
}

Ответы [ 2 ]

0 голосов
/ 20 октября 2018

Мне удается найти решение, если вам лучше, пожалуйста, отправьте его;)

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

    }
0 голосов
/ 20 октября 2018

попробуйте:

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

 }
...