none
Agregar condición a esta consulta RRS feed

  • Pregunta

  • Hola como tengo esta consulta que me separa un numero de embalador y cuenta la cantidad de cajas y lo hago de esta forma

     var querySD = (from c in dbcontextK1.PRODUCCION
                               where (c.ALTA >= buscar1 && c.ALTA <= buscar2) && c.UP.Contains("TU") && !c.ETIQUETA.Contains("NOREAD") && c.RECHAZO == 0
                               
                               group c by c.ETIQUETA into grp
                               select new { key = grp.Key }).ToList();
                               
                
                var querySD2 = (from x in dbcontextK2.PRODUCCION
                                where (x.ALTA >= buscar1 && x.ALTA <= buscar2) && x.UP.Contains("TU") && !x.ETIQUETA.Contains("NOREAD") && x.RECHAZO == 0
                                group x by x.ETIQUETA into grp
                                select new { key = grp.Key }).ToList();
                                
                
                var aggregateQuerySD = from x in querySD.Concat(querySD2)
                                       group x by x.key.Substring(0, 3) into grp
                                       select new { key = grp.Key, cnt = grp.Count() };

    Ahora para complicarla un poco mas tengo un campo llamado PESO donde se registran los pesos de las distintas caja y lo que debo hacer es por ejemplo en la consulta si va de 0 a 6 la caja es la numero 1 si la caja es de 6,01 a 10 la caja es 2 y así cinco distintos tipos de cajas, esto es porque el valor que se paga es distinto de acuerdo al peso de la caja

    en la consulta anterior despues ponia esto y lo mostraba en un grid

    foreach (var P in aggregateQuerySD.ToList())
                {
                    dataGridView6.Rows.Add(P.key, P.cnt);
                }
    y necesito ahora es (embalador caja N1 cantidad caja N2 cantidad etc) desde ya gracias 

    martes, 16 de mayo de 2017 17:12

Respuestas

  • La propuesta de solución está planteada, debes aplicar a tu desarrollo con los cambios que consideres oportuno, desconozco si el peso lo sumarizas o no antes de obtener el indicador, no sé, por ejemplo:

    var data = (from p in ((from c in dbcontextK1.PRODUCCION
    		where (c.ALTA >= buscar1 && c.ALTA <= buscar2) && c.UP.Contains("TU")
    			&& !c.ETIQUETA.Contains("NOREAD") && c.RECHAZO == 0
    		group c by new { c.ETIQUETA, c.PESO } into grp
    		select new { Etiqueta = grp.Key.ETIQUETA, Peso = grp.Key.PESO })
    	.Union(from c in dbcontextK2.PRODUCCION
    		where (c.ALTA >= buscar1 && c.ALTA <= buscar2) && c.UP.Contains("TU")
    			&& !c.ETIQUETA.Contains("NOREAD") && c.RECHAZO == 0
    		group c by new { c.ETIQUETA, c.PESO } into grp
    		select new { Etiqueta = grp.Key.ETIQUETA, Peso = grp.Key.PESO }))
    	group p by new { Etiqueta = p.Etiqueta.Substring(0, 3), Peso = p.Peso } into g
    	select new
    	{
    		Etiqueta = g.Key.Etiqueta,
    		Cuenta = g.Count(),
    		IndPeso = g.Key.Peso <= 6
    			 ? 1
    			 : g.Key.Peso <= 10
    				 ? 2
    				 : g.Key.Peso <= 15
    					 ? 3
    					 : 4
    	}).ToList();



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta EnzoTuc40 martes, 16 de mayo de 2017 21:11
    martes, 16 de mayo de 2017 21:02

Todas las respuestas

  • Agrupa por las propiedades ETIQUETA y PESO y resuelve el valor bajo condiciones, por ejemplo:

    group c by new { c.ETIQUETA, c.PESO } into grp
    select new
    {
       key = grp.Key.ETIQUETA,
       IndPeso = grp.Key.PESO <= 6
    	? 1
    	: grp.Key.PESO <= 10
    		? 2
    		: grp.Key.PESO <= 15
    			? 3
    			: 4
    }).ToList();


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 16 de mayo de 2017 19:18
  • Agrupa por las propiedades ETIQUETA y PESO y resuelve el valor bajo condiciones, por ejemplo:

    group c by new { c.ETIQUETA, c.PESO } into grp
    select new
    {
       key = grp.Key.ETIQUETA,
       IndPeso = grp.Key.PESO <= 6
    	? 1
    	: grp.Key.PESO <= 10
    		? 2
    		: grp.Key.PESO <= 15
    			? 3
    			: 4
    }).ToList();


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.

    Gracias Williams por tu respuesta, te consulto una vez mas como agregaría esta consulta a la parte concatenada ?

    a esta parte

    var aggregateQuerySD = from x in querySD.Concat(querySD2)
                                       group x by x.key.Substring(0, 3) into grp
                                       select new { key = grp.Key, cnt = grp.Count()};

    Desde ya gracias

     
    martes, 16 de mayo de 2017 19:39
  • La propuesta de solución está planteada, debes aplicar a tu desarrollo con los cambios que consideres oportuno, desconozco si el peso lo sumarizas o no antes de obtener el indicador, no sé, por ejemplo:

    var data = (from p in ((from c in dbcontextK1.PRODUCCION
    		where (c.ALTA >= buscar1 && c.ALTA <= buscar2) && c.UP.Contains("TU")
    			&& !c.ETIQUETA.Contains("NOREAD") && c.RECHAZO == 0
    		group c by new { c.ETIQUETA, c.PESO } into grp
    		select new { Etiqueta = grp.Key.ETIQUETA, Peso = grp.Key.PESO })
    	.Union(from c in dbcontextK2.PRODUCCION
    		where (c.ALTA >= buscar1 && c.ALTA <= buscar2) && c.UP.Contains("TU")
    			&& !c.ETIQUETA.Contains("NOREAD") && c.RECHAZO == 0
    		group c by new { c.ETIQUETA, c.PESO } into grp
    		select new { Etiqueta = grp.Key.ETIQUETA, Peso = grp.Key.PESO }))
    	group p by new { Etiqueta = p.Etiqueta.Substring(0, 3), Peso = p.Peso } into g
    	select new
    	{
    		Etiqueta = g.Key.Etiqueta,
    		Cuenta = g.Count(),
    		IndPeso = g.Key.Peso <= 6
    			 ? 1
    			 : g.Key.Peso <= 10
    				 ? 2
    				 : g.Key.Peso <= 15
    					 ? 3
    					 : 4
    	}).ToList();



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta EnzoTuc40 martes, 16 de mayo de 2017 21:11
    martes, 16 de mayo de 2017 21:02
  • Muchas gracias por tu respuesta y predisposición, ya lo adapte 
    martes, 16 de mayo de 2017 21:11