2013-07-18 111 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

似乎工作... –