2011-12-19 3 views
5

그녀는 내가 가진 테이블을 보여주는 이미지입니다. b 그리드를 표시해야합니다. opps cant post image. 설명하려고 애를 씁니다. 내 테이블에는 4 개의 칼럼이 있습니다.Linq To SQL Group By and Sum

  1. 프로젝트 번호 (문자열)
  2. ItemNumber (문자열)
  3. 위치 (문자열)
  4. 수량. (리얼).

내 눈금이 이렇게 보입니다.

  1. ProjectNumber
  2. ItemNumber
  3. QtyMain.
  4. 수량 기타.

나는 내가 SE 1 개 라인 홍보 프로젝트/ItemNumber 조합은 위치가 아닌 곳에 수량을 보여주는 위치가 메인이다 수량 및 1 수량 2로 differetn의 colums 1 보여주는를 합산 있도록 에브리 라인을 그룹화 LINQ 쿼리를 작성하는 필요 (! =) main. linq이 나를 위해 이것을 할 수 있습니까, 아니면 어떻게 할 수 있습니까? 결과

+0

이것은의 중복 (http://stackoverflow.com/questions/216513/sum-and-group -by-in-linq-to-sql) –

+1

나는 그럴 수 없다고 생각하지만, 아마 VB에서는 잘 모른다. –

답변

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(); 
} 

[? LINQ to SQL은의 합계와 그룹으로]

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

Ty, 도움이 필요하다. THX :) –

+0

@ 스카 페이스 : 천만에요. 나는 기쁘다. –

+0

@Scarface : BTW, LINQpad를 살펴보면 (시작하거나 멈추고 싶다면) 권하고 싶습니다. 위의 내용은 해당 도구에 복사하여 붙여 넣기하여 편집자 윈도우 위에 "언어 : C# 프로그램"을 선택하는 것이 얼마나 유용한 지 보여줍니다. –