2013-07-18 150 views
0

我有以下結構中的數據,需要按Id和Date進行分組。日期是一個數組上的字段。我需要總結每個日期在頂級Id分組的數量,這可能與linq?使用linq按數組元素分組

Id 
Number 
MyArray[] 

MYARRAY如下:

[Amount, Date] 

試圖用這樣的事情,但它不會工作,因爲我的第二分組是主項

輸入陣列上:

Id Number MyArray 
1 5  [{500.00,2001-03-08}, {200,2001-04-04}, {600, 2001-03-09}] 
2 6  [{700.00,2001-03-08}, {300,2001-03-08}] 
1 7  [{400.00,2001-03-08}, {100, 2001-04-04}, {550.00,2001-12-12}] 

預期結果:

Id MyArray 
    1 [{500.00+400.00,2001-03-08}, {200+100,2001-04-04}, {600, 2001-03-09}, {550.00,2001-12-12}] 
    2 [{700.00,2001-03-08}, {300,2001-03-08}] 

from s in db.Schedules 

group s by new {s.empid, s.weekending} into g 

select new { g.Key.empid, g.Key.weekending, g.Sum(s => s.hours) }; 
+0

可不可以給使用一個樣本輸入和期望的輸出? – MarcinJuraszek

+0

@MarcinJuraszek - 我已經添加了輸入和預期結果 –

回答

-1
var results = db.Schedules.GroupBy(x => x.Id) 
          .Select(g => new 
             { 
              .Id = g.Key, 
              .Data = g.SelectMany(x => x.MyArray) 
                .GroupBy(x => x.Date) 
                .Select(g2 => new { Amount = g2.Sum(x => x.Amount), Date = g2.Key }) 
                .ToArray() 
             }); 
+0

謝謝!我有可能將.Data設置爲新的MyArray類型?所以匿名對象上有一個MyArray而不是數組[DateTime,Decimal] –

+0

這沒有得到預期的結果,或者OP的例子是錯誤的。 – sloth

+0

似乎工作... –