Quantcast
Channel: Query en Linq
Viewing all articles
Browse latest Browse all 2

Query en Linq

$
0
0

hola

bien esta bastante compleja la consulta, mas que anda porque involucra varias tablas

 

hay algunso puntos que me quedan en duda, ya que la query en sql no lo refleja

los campos del select a que tabla hacen referencia ?

SELECT
      Departamento,
      SUM ( Cantidad* Precio) AS Total

es que le faltan las alias a estos campos, imagino que no son todos campos de la tabla SalidasAlmacen, los alias ayudarian seria bueno definirlos simpre en la query

 

intente aproximarlo algo mas pero igual no creo que funcione, ademas no puedo probarlo

hasta donde llegue, podrias hacer algo como esto:

 

var Costo = (from sa in dc.SalidasAlmacen
             join ca in dc.CatArticulos
             on sa.CveArticulo equals ca.CveArticulo
             join cd in dc.CatDepartamentos
             on sa.CveDepartamento equals cd.CveDepartamento
             from depas in _depas
             where sa.DeptoSalida == ca.CveDepartamento && ca.Tipo == 'C' && cd.Tipo == 'C' &&
             sa.Fecha >= fi && sa.Fecha <= ff && sa.DeptoSalida == 49 && cd.CveSucursal == suc
             && sa.CveDepartamento == depas
             group sa by cd.Departamento into grp
             select new
             {
                 Departamento = grp.Key,
                 Cantidad = grp.Sum(x => x.Cantidad),
                 Precio = grp.Sum(x => x.Precio)
             });

 

algunos punto, en el group by no necesitas usar el new ya que es solo por un campo por el cual agrupas : group sa by cd.Departamento into grp

por el tema de calcular directo el total, no estoy seguro que puedas, pero si agrupas por cantidad y precio para ese depto, podrias luego cuando lo trabajes en la lista multiplicarlo, o podrias crar una clase que lo haga

public class DeptoInfo
{
    public string Departamento{get; set;}
    public int Cantidad{get; set;}
    public int Precio{get; set;}
   
    public int Total
    {
        get{ return this.Cantidad * this.Precio;}
    }
   
}

 

y tu linq seria

var Costo = (from sa in dc.SalidasAlmacen
             join ca in dc.CatArticulos
             on sa.CveArticulo equals ca.CveArticulo
             join cd in dc.CatDepartamentos
             on sa.CveDepartamento equals cd.CveDepartamento
             from depas in _depas
             where sa.DeptoSalida == ca.CveDepartamento && ca.Tipo == 'C' && cd.Tipo == 'C' &&
             sa.Fecha >= fi && sa.Fecha <= ff && sa.DeptoSalida == 49 && cd.CveSucursal == suc
             && sa.CveDepartamento == depas
             group sa by cd.Departamento into grp
             select new DeptoInfo()
             {
                 Departamento = grp.Key,
                 Cantidad = grp.Sum(x => x.Cantidad),
                 Precio = grp.Sum(x => x.Precio)
             });

o sea creas una instancia que ya no es mas anonima, asi podrias luego suar la propiedad de Total que esta clase define de solo lectura

 

otro punto que estoy  en duda es el uso de _depas, este deberias agregarlo como un "from" en la query para que tome parte de la consulta y puedas igualar a un campo, sino es como si estuviera desacomplado.

lo que si no estoy seguro es si ese from va junto al primero que defines, o puedes ponerlo al fina, como arme en el ejemplo

 

como comente la query es bastante compleja, pero creo que si la armas de a poco y vas a analziando los rsultado podrias ayudar

por ejemplo al prncipio podrias quitar los filtros, y verifica que asi funcione

var Costo = (from sa in dc.SalidasAlmacen
             join ca in dc.CatArticulos
                on sa.CveArticulo equals ca.CveArticulo
             join cd in dc.CatDepartamentos
                on sa.CveDepartamento equals cd.CveDepartamento
             from depas in _depas
             group sa by cd.Departamento into grp
             select new
             {
                 Departamento = grp.Key,
                 Cantidad = grp.Sum(x => x.Cantidad),
                 Precio = grp.Sum(x => x.Precio)
             });

luego ve agregandole dificultad de a poco, si armas todo de golpe sea dificil que encuantees porque falla

saludos


Leandro Tuttini

Blog
Buenos Aires
Argentina

Viewing all articles
Browse latest Browse all 2

Trending Articles


Girasoles para colorear


Pokemon para colorear


Gwapo Quotes : Babaero Quotes


Love Quotes Tagalog


Two timer Sad tagalog Love quotes


Inggit Quotes and Kabit Quotes – Tagalog Patama Quotes


5 Uri ng Pambobola


Best Love Life Quotes Collection


Vimeo 10.7.0 by Vimeo.com, Inc.


Vimeo 10.7.1 by Vimeo.com, Inc.


RE: Mutton Pies (frankie241)


Sapos para colorear


tagalog love Quotes – Tiwala Quotes


Long Distance Relationship Tagalog Love Quotes


Ligaw Quotes – Courting Quotes – Sweet Tagalog Quotes


INUMAN QUOTES


Hugot Lines 2020 Patama : ML Edition


Re:Mutton Pies (lleechef)


EASY COME, EASY GO


FORECLOSURE OF REAL ESTATE MORTGAGE



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>