2011-12-19 48 views
5

Cô ấy là một hình ảnh hiển thị bảng tôi có, b lưới tôi cần hiển thị. không thể đăng hình ảnh. bệnh cố gắng giải thích. Bảng của tôi có bốn colums.LINQ to SQL nhóm theo và tổng số

  1. Số dự án (String)
  2. ItemNumber (String)
  3. Location (String)
  4. Qty. (Real).

Lưới của tôi cần phải trông như thế này.

  1. ProjectNumber
  2. ItemNumber
  3. QtyMain.
  4. QtyOther.

Tôi cần viết một truy vấn LINQ Nhóm dòng evry vì vậy tôi sẽ se 1 Dòng pr Project/ItemNumber kết hợp tổng số qty thành 2 colour differetn 1 cho qty vị trí chính và 1 hiển thị qty nơi vị trí không (! =) chính. LINQ có thể làm điều này cho tôi, hoặc làm thế nào có thể được thực hiện?

+0

Đây là một bản sao của (http://stackoverflow.com/questions/216513/sum-and-group -by-in-linq-to-sql) –

+1

Tôi không thể tin được, nhưng có lẽ nó chỉ vì tôi không biết VB. –

Trả lời

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

Hệ quả là: [? Sum và Nhóm Bởi trong LINQ to SQL]

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

Ty for the Help, thực hiện những gì tôi cần. THX :) –

+0

@Scarface: Bạn được chào đón; Tôi rất vui được giúp đỡ. –

+0

@Scarface: BTW, tôi khuyên bạn nên sử dụng LINQpad. Ở trên sẽ sao chép-dán trong công cụ đó và cho bạn thấy nó hữu ích như thế nào (chỉ cần chắc chắn chọn "Ngôn ngữ: C# chương trình" trên cửa sổ soạn thảo. –

Các vấn đề liên quan