none
Consulta Linq RRS feed

  • Pregunta

  • Buenas tardes 

    Como verán los que me conocen me estoy introduciendo al mundo de Linq, por lo cual estoy investigando cosas y aprendiendo y por supuesto gracias a ustedes

    Ahora tengo una duda tengo esta consulta SQL

    Select f.muluid, f.name, sum(t.cantidad) As cantidad, sum(t.total) As total
                                            From 
                                            (
    	                                        select d.codigo, sum(d.zongshuliang) as cantidad, sum(d.zongshuliang * d.precio) as total   
    	                                         from pedidolist c Inner Join 
    		                                         pedidomov d on c.pedidokey= d.pedidokey
    		                                        where c.fecha_c between "2016-08-01" and  DATE_ADD( "2016-08-22", INTERVAL 1 DAY)
    		                                         GROUP BY d.codigo
                                            ) t Inner Join 
                                                articulo a on t.codigo = a.codigo inner join 
                                                familia f on f.muluid = a.muluid 
                                             group by f.muluid, f.name
                                              order by f.muluid

    Bien este es el resultado

    Ahora cmoo puedo hacer una consulta mas facil y que sea el LINQ el que trabaje el resto ya que he visto que el LINQ es muy rapido

    Saludos


    ruben

    martes, 23 de agosto de 2016 17:04

Respuestas

  • Un truco para hacerla con LINQ es escribirla por partes y luego hacer la combinación de las partes. A la hora de ejecutarlo, internamente lo junta todo y lo convierte en una única sentencia enviada al servidor. Pero no será más rápido que la sentencia SQL original, dado que lo que hace es convertir el LINQ precisamente en una sentencia parecida a la SQL de partida. Te lo escribo parcialmente para que te hagas a la idea de cómo queda más o menos; tendrás que completar lo que falta.

    var qt = from c in db.pedidolist join d in pedidomov on c.pedidokey equals d.pedidokey

         where c.fecha_c >= new DateTime(2016,8,1) && c.fecha_<= fechafinal

         groupby d.codigo into g select new { codigo=g.Key, etc etc };

    var q2 = from t in qt join a in db.articulo on t.codigo equals a.codigo etc etc

    martes, 23 de agosto de 2016 18:58
    Moderador