Search by numeric value sql net mvc2

0

I must filter the data by the address table data, it works fine with string but with int no.

public ActionResult Buscar(string palabra)
        {
            IEnumerable<domicilio> domicilios;

            using (var bd = new serviexpressEntities2())
            {
                domicilios = bd.domicilio;

                if (!String.IsNullOrEmpty(palabra))
                {
                    domicilios = domicilios.Where(l => l.cedula.Contains(palabra) || l.documento.Contains(palabra) || l.direccion1.Contains(palabra) || l.direccion2.Contains(palabra) || l.modo_pago.Contains(palabra));

                }

                if (!String.IsNullOrEmpty(palabra))
                {
                    int pr = Convert.ToInt32("palabra");
                    return View(domicilios.Where(x => x.precio == pr));
                }


                domicilios = domicilios.ToList();
            }

            return View(domicilios);
        }

When I do the search, it signals me an error in the line:

 int pr = Convert.ToInt32("palabra"); 

the error is: a Make sure that your method arguments have the correct format by clicking on it:

  

{"The input string does not have the correct format."}

    
asked by ives rodriguez 27.10.2017 в 20:58
source

1 answer

0

I do not know exactly what you're trying but the string "word" will never be an intero:

// imposible, como puede, por ejemplo, la letra p ser convertido a intero? o la letra a?
int pr = Convert.ToInt32("palabra");

Maybe what you want is to convert the value of the variable palabra to integer, not the String "word".

Use the int.TryParse() method where it validates if a string is not valid to be converted to integer then returns false , otherwise true :

public ActionResult Buscar(string palabra)
{
    IEnumerable<domicilio> domicilios;

    using (var bd = new serviexpressEntities2())
    {
        domicilios = bd.domicilio;
        if (!String.IsNullOrEmpty(palabra))
        {
            domicilios = domicilios.Where(l => l.cedula.Contains(palabra) || l.documento.Contains(palabra) || l.direccion1.Contains(palabra) || l.direccion2.Contains(palabra) || l.modo_pago.Contains(palabra));

        }

        int pr = 0;
        if (!String.IsNullOrEmpty(palabra) && int.TryPase(palabra, out pr) == true)
        {
            return View(domicilios.Where(x => x.precio == pr));
        }


        domicilios = domicilios.ToList();
    }

    return View(domicilios);
}
    
answered by 27.10.2017 в 21:07