none
Contains en LINQ MVC C# RRS feed

  • Pregunta

  • Buen dia, 

    Necesito ayuda con LINQ, necesito hacer una busqueda.

    El usuario ingresa en un INPUT una palabra clave la cual he declarado de tipo string y tiene que buscar en un campo de una tabla las coincidencias.

    La variable palabraClave es la que ingresa el usuario y la tiene que buscar en la entidad CONTENIDO y el campo es DESCRIPCION.

    Estoy haciendo algo asi, tengo que mostrar tres listas por eso estoy declarando una variable y despues las unire.

    Por anticipado Muchas gracias!! No he podido realizarlo.

    public List<ContVm> BusquedaPorPalabraClave(string palabraClave = "")
            {
                try
                {
                    using (var db = new Entities())
                    {
                    var Articulos = db.CONTENIDO.Where(w => palabraClave.Contains(w.DESCRIPCION)).ToList();
                      List<ContenidoVm> lista = new List<ContenidoVm>();
    
                        lista.AddRange(Articulos.Select(s => new ContenidoVm
                        {
                            Titulo = s.TITULO,
                            Descripcion = s.DESCRIPCION,
                        }).ToList());
    
                      
                        return lista.DistinctBy(d => d.Id).OrderBy(o => o.Id).ToList();
    
    }
    
    
                }
                catch
                {
    
                    throw;
                }
    
    
            }


    nwgirl

    jueves, 5 de abril de 2018 20:18

Respuestas

  • Buenas

    Casi lo tenias, solo tienes que cambiar esta linea

    var Articulos = db.CONTENIDO.Where(w => palabraClave.Contains(w.DESCRIPCION)).ToList();
    //Por
    var Articulos = db.CONTENIDO.Where(w => w.DESCRIPCION.Contains(palabraClave)).ToList();
    

    Te propongo este cambio, porque entiendo que la descripción es mayor que la palabra clave, y según lo tenias tu, tu palabra clave tenia que contener toda la descripción, y no al revés, por ejemplo

    Descripción-> "Coche amarillo"
    Palabraclave-> "Coche"

    Según lo tenias tu, el string "Coche" tenia que contener el string "Coche amarillo", con el cambio que te he propuesto, es el string "Coche amarillo" el que tiene que contener "Coche"

    Pruebalo y si tienes dudas nos comentas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:


    • Editado Jorge TurradoMVP jueves, 5 de abril de 2018 20:45
    • Marcado como respuesta Annie_22 jueves, 5 de abril de 2018 21:40
    jueves, 5 de abril de 2018 20:45

Todas las respuestas

  • Buenas

    Casi lo tenias, solo tienes que cambiar esta linea

    var Articulos = db.CONTENIDO.Where(w => palabraClave.Contains(w.DESCRIPCION)).ToList();
    //Por
    var Articulos = db.CONTENIDO.Where(w => w.DESCRIPCION.Contains(palabraClave)).ToList();
    

    Te propongo este cambio, porque entiendo que la descripción es mayor que la palabra clave, y según lo tenias tu, tu palabra clave tenia que contener toda la descripción, y no al revés, por ejemplo

    Descripción-> "Coche amarillo"
    Palabraclave-> "Coche"

    Según lo tenias tu, el string "Coche" tenia que contener el string "Coche amarillo", con el cambio que te he propuesto, es el string "Coche amarillo" el que tiene que contener "Coche"

    Pruebalo y si tienes dudas nos comentas

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:


    • Editado Jorge TurradoMVP jueves, 5 de abril de 2018 20:45
    • Marcado como respuesta Annie_22 jueves, 5 de abril de 2018 21:40
    jueves, 5 de abril de 2018 20:45
  • Muchas gracias me funcionó

    nwgirl

    jueves, 5 de abril de 2018 21:41
  • Una duda, el problema ahora, es que solo me muestra una coincidencia cuando tiene mas.. como podria mostrar todas las coincidencias

    nwgirl

    jueves, 5 de abril de 2018 21:49
  • Buenas,

    No entiendo la pregunta, como es eso de que ahora solo muestra una coincidencia cuando tienes mas?

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    jueves, 5 de abril de 2018 22:23