none
convertir esta query linq en Lambda RRS feed

  • Pregunta

  • Hola como va ?. Estoy realizando ejercicios con net core, y en bastantes articulos lei que es mejor o por lo menos mas optimo usar expresion lambda en la query que realizar un foreach. Primero saber si esto es asi. y segundo por ejemplo yo tengo esta consulta

    var query = from p in dbcontext.Reglas
                                    where p.ReglaId == codper
                                    select p;
                        foreach (Reglas p in query)
                        {
    
                            p.Regla = txtRegla.Text;
                            p.Descripcion = txtDescripcion.Text;
                           
                        }
                        dbcontext.SaveChanges();

    Ahora bien como pasaría esta consulta a una expresión lambda hice solo el select que es asi

    var names = dbcontext.Reglas.Where(item => item.ReglaId == codper)
                          .Select(item => item.ReglaId);

    Lo que me gustaria saber es como asigno a los campos "Regla" y "Descripcion" los valores.

    desde ya gracias

    viernes, 3 de mayo de 2019 23:51

Respuestas

  • Puedes asignar los campos exactamente igual cuando usas la lambda que cuando usas la query:

                        var names = dbcontext.Reglas.Where(item => item.ReglaId == codper)
                          .Select(item => item.ReglaId);
                        foreach (Reglas p in names)
                        {
                            p.Regla = txtRegla.Text;
                            p.Descripcion = txtDescripcion.Text;
                        }

    Recuerda que las dos cosas son exactamente equivalentes, es decir, el compilador genera internamente el código compilado cuando usas la lambda que cuando usas la consulta LINQ. Por lo tanto, ninguna es "más óptima" como decías al principio. Tanto una como la otra generan un IQueryabe<Regla> (en la variable "query" o la variable "names", y por lo tanto en ambos casos puedes aplicar el mismo bucle sobre dicha variable.



    sábado, 4 de mayo de 2019 11:05

Todas las respuestas

  • Puedes asignar los campos exactamente igual cuando usas la lambda que cuando usas la query:

                        var names = dbcontext.Reglas.Where(item => item.ReglaId == codper)
                          .Select(item => item.ReglaId);
                        foreach (Reglas p in names)
                        {
                            p.Regla = txtRegla.Text;
                            p.Descripcion = txtDescripcion.Text;
                        }

    Recuerda que las dos cosas son exactamente equivalentes, es decir, el compilador genera internamente el código compilado cuando usas la lambda que cuando usas la consulta LINQ. Por lo tanto, ninguna es "más óptima" como decías al principio. Tanto una como la otra generan un IQueryabe<Regla> (en la variable "query" o la variable "names", y por lo tanto en ambos casos puedes aplicar el mismo bucle sobre dicha variable.



    sábado, 4 de mayo de 2019 11:05
  • Hola Alberto gracias por tu respuesta.
    sábado, 4 de mayo de 2019 11:21