Поиск записи по имени и идентификатору - PullRequest
0 голосов
/ 24 сентября 2019

Я работаю с ASP.Net MVC со студией управления SQL-сервером.Теперь, как мне получить запись по заданному имени и / или идентификатору?

В настоящее время я нахожу запись только с использованием идентификатора, который просто отлично работает, но при поиске записи по имени она не найдетсяправильная запись.

Мой текущий код выглядит примерно так:

//Student.cs

public partial class Student
{
    public int No { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }
    public Nullable<decimal> mobileno { get; set; }
    public string Image { get; set; }
}
//Index.cshtml

@using (Html.BeginForm("search", "CrudManually", FormMethod.Post))
{
     @Html.TextBox("id")<br/>
     @Html.TextBox("searchString")<br/>
     <input type="submit" value="Search"/>
}
//CrudManuallyController.cs

public class CrudManuallyController : Controller
{
    public ActionResult Index()
    {

        return View(db.manages.ToList());
        //return View();
    }

    [HttpPost]
    public ActionResult search(int id,string searchString,Student students)
    {

            var query = db.students.Where(d => d.No == id).AsQueryable();

            if (!string.IsNullOrEmpty(searchString))
            { 
                query = query.Where(d => d.Name.Contains(searchs)); // generate an error local variable 'searchs' before it is declared.
            }

            var  searchs = query.ToList();
            return View("index",searchs);


    }
}

Теперь, как мне запросить идентификатор и имя одновременно?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2019

обновить ваш контроллер

public class CrudManuallyController : Controller
{
    public ActionResult Index()
    {

        return View(db.manages.ToList());
        //return View();
    }

    [HttpPost]
    public ActionResult search(int? id, string searchString,Student students)
    {
        //Lambda Linq to entity does not support Int32
        //var search = (from d in db.students where d.No == Convert.ToInt32(id) && d.Name == id select d).ToList();
        //var search = db.students.Where(d => d.No == Convert.ToInt32(id) && d.Name == id).ToList();
        query = db.students.AsQueryable();
        if (id.HasValue)
        {
            var studentId = id.Value;
            query = query.Where(d => d.No == studentId);
        }
        if (!string.IsNullOrEmpty(searchString))
            query = query.Where(d => d.Name.Contains(searchString));

        var search = query.ToList();
        return View("index",search);
    }
}

обновить ваш .cshtml

@using (Html.BeginForm("search", "CrudManually", FormMethod.Post))
{
    @Html.TextBox("id")
    @Html.TextBox("searchString")
    <br/>
    <input type="submit" value="Search"/>
}
0 голосов
/ 24 сентября 2019

Вы можете получить 2 пути

list.Where(i => i.Property == value).FirstOrDefault();       // C# 3.0+

list.Find(i => i.Property == value);                         // C# 3.0+

, если вы найдете какой-либо предмет, вы можете получить его.Если вы не нашли предмет, вы получите ноль.

Скажите, если решите:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...