MVC WEB API Search операция по нескольким полям - PullRequest
0 голосов
/ 11 октября 2018

Я пытался выполнить операцию поиска.Каким-то образом мне удалось реализовать операцию поиска по столбцу.Теперь я хочу искать через несколько столбцов.например, если моя таблица содержит имя, номер, адрес электронной почты, пол.и если я ищу слово M и мой столбец имя содержит поле как Mandy , а если мой столбец email содержит значение man@mas.com Я хочу, чтобы они оба отображались.

Как бы я это сделал?

view

<td>@Html.TextBoxFor(model => model.name, new { @placeholder = "search by name" })</td>
            <td><input type="submit" value="search" class="btn-success" /></td>

Контроллер MVC:

[HttpPost]
public ActionResult Index(Customer cvm)
{
    CustomerClient cc = new CustomerClient();
    ViewBag.listCustomers = cc.search(cvm.name);
    return View();
}

Класс клиента:

public IEnumerable<Customer> search(int name)
{
    try
    {
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(Base_URL);
        client.DefaultRequestHeaders.Accept.Add(new 
            MediaTypeWithQualityHeaderValue("application/json"));
        var result = client.GetAsync(string.Format("customers/search/{0}", name)).Result;
        if (result.IsSuccessStatusCode)
            return result.Content.ReadAsAsync<IEnumerable<Customer>>().Result;
        return null;
    }
    catch
    {
        return null;
    }
}

Контроллер API:

[HttpGet]
[Route("search/{name}")]
public HttpResponseMessage search(int name)
{
    try
    {
        var httpresponsemessage = new HttpResponseMessage();

        httpresponsemessage.Content = new StringContent(
            JsonConvert.SerializeObject(db.customers.Where(
            p => p.name.Contains(name)).ToList()));

        httpresponsemessage.Content.Headers.ContentType = new
            MediaTypeHeaderValue("application/json");
        return httpresponsemessage;
    }
    catch
    {
        return null;
    }
}

1 Ответ

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

Как и предполагалось, если вы используете Query, попробуйте ниже единицы:

DECLARE @search NVARCHAR(MAX)

SELECT * 
FROM [TABLE_NAME]
WHERE name LIKE '%' + @search + '%' OR number LIKE '%' + @search + '%' OR
      email LIKE '%' + @search + '%' OR gender LIKE '%' + @search + '%'

Если вы используете EF, попробуйте ниже единицы,

db.customers.Where(p => p.name.Contains(name) || p.number.Contains(name)
                    || p.email.Contains(name) || p.gender.Contains(name)).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...