2011-12-19 25 views
5

Ella es una imagen que muestra la tabla que tengo, b la cuadrícula que necesito mostrar. opps cant publicar imagen. trataré de explicar. Mi mesa tiene cuatro columnas.Linq to SQL Group By y Suma

  1. Número del Proyecto (String)
  2. ItemNumber (String)
  3. Ubicación (String)
  4. Cant. (Real).

Mi cuadrícula debe tener este aspecto.

  1. ProjectNumber
  2. ItemNumber
  3. QtyMain.
  4. Cantidad Otros.

Tengo que escribir una consulta LINQ Agrupación línea de Evry así que voy a SE 1 Proyecto pr Línea/ItemNumber combinación sumando Cant en 2 columnas differetn 1 que muestra con Cantidad donde la ubicación es principal y 1, que muestra el qty donde la ubicación no es (! =) principal. ¿Puede linq hacer esto por mí, o cómo se puede hacer esto?

+0

Este es un duplicado de (http://stackoverflow.com/questions/216513/sum-and-group -by-in-linq-to-sql) –

+1

No puedo decir que lo sea, pero tal vez sea solo porque no conozco bien a VB. –

Respuesta

7
public class Foo 
{ 
    public Int32 ProjectNumber; 
    public String ItemNumber; 
    public String InventLocation; 
    public Int32 Qty; 
} 

void Main() 
{ 
    List<Foo> foos = new List<Foo>(new[]{ 
     new Foo { ProjectNumber = 1, ItemNumber = "a", InventLocation = "Main", Qty = 3 }, 
     new Foo { ProjectNumber = 1, ItemNumber = "a", InventLocation = "Main", Qty = 3 }, 
     new Foo { ProjectNumber = 1, ItemNumber = "a", InventLocation = "Sub", Qty = 2 }, 
     new Foo { ProjectNumber = 1, ItemNumber = "a", InventLocation = "Sub", Qty = 1 }, 
     new Foo { ProjectNumber = 1, ItemNumber = "a", InventLocation = "Sub2", Qty = 5 } 
    }); 

    var foo = from f in foos 
       group f by new { f.ProjectNumber, f.ItemNumber } into fGroup 
       select new { 
       ProjectNumber = fGroup.Key.ProjectNumber, 
       ItemNumber = fGroup.Key.ItemNumber, 
       QtyMain = fGroup.Where (g => g.InventLocation == "Main").Sum (g => g.Qty), 
       Rest = fGroup.Where (g => g.InventLocation != "Main").Sum (g => g.Qty) 
       }; 
    foo.Dump(); 
} 

El resultado es: [? Sum y Agrupar por en LINQ to SQL]

IEnumerable<> (1 item) 
ProjectNumber ItemNumber QtyMain Rest 
1    a   6  8 
+1

Ty for the Help, por ejemplo, lo que necesitaba. THX :) –

+0

@Scarface: De nada; Estoy contento de ayudar. –

+0

@Scarface: por cierto, lo recomiendo (especialmente si estás empezando o simplemente entendiéndolo) mirando LINQpad. Lo anterior copiará y pegará en esa herramienta y le mostrará lo útil que puede ser (solo asegúrese de seleccionar "Idioma: programa C#" sobre la ventana del editor. –