'int' не содержит определения для 'Contains' и лучшей перегрузки метода расширения 'Queryable.Contains - PullRequest
2 голосов
/ 05 марта 2020

Я хочу отфильтровать вид сетки по идентификатору, но что-то в моем синтаксисе ошибка

Это мой HomeController:

public ActionResult Index(int searching)
{
   return View(db.ex_op.Where( x => x.id_ats.Contains(searching) || searching = null).ToList());
}

это мой HomeView:

@using (Html.BeginForm("Index", "Home", FormMethod.Get))
{
    @Html.TextBox("searching")
    <input type="submit" value="Search" />
}

это моя ошибка:

'int' не содержит определения для 'Contains', а для лучшей перегрузки метода расширения 'Queryable.Contains (IQueryable, int)' требуется получатель типа 'IQueryable' `` `

Большое спасибо!

1 Ответ

2 голосов
/ 05 марта 2020

Вы должны изменить с .Contains() на ==, чтобы иметь возможность сравнивать int

public ActionResult Index(int searching)
{
   return View(db.ex_op.Where( x =>  searching == null || x.id_ats == searching ).ToList());
}

или Вы все еще хотите отфильтровать по Contains, вы можете конвертировать .ToString() вместе с измените тип параметра на string вот так

public ActionResult Index(string searching)
{
   return View(db.ex_op.Where( x => searching == null || x.id_ats.ToString().Contains(searching)).ToList());
}

Обновлено

В основном, если вы не используете (int? search) Что означает nullable int , значение по умолчанию int равно нулю, поэтому вам не нужно проверять null.

db.ex_op.Where( x => x.id_ats == searching).ToList()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...