GroupBy来自两个表

时间:2016-06-23 11:56:59

标签: c# linq-to-sql

我想要添加GroupBy语句。我有两张桌子可供选择:

MU_Reports表

Date      | Shift | Machine | MU
1/12/2016 |   1   |   12    | 44%
1/12/2016 |   2   |   12    | 34%
1/12/2016 |   2   |   12    | 34%
1/12/2016 |   3   |   12    | 54%
1/12/2016 |   3   |   13    | 24%

DownTime_Reports表

Date      | Shift | Machine | DT Code  |  DT_Hours
1/12/2016 |   1   |   12    | No Work  |    3
1/12/2016 |   2   |   12    | No Resin |    2
1/12/2016 |   2   |   12    | No Op.   |    4
1/12/2016 |   3   |   12    | No Work  |    1
1/12/2016 |   3   |   13    | No Work  |    5
1/12/2016 |   3   |   12    | No Work  |    5

示例输出:

Date      | Shift | Machine | MU   |  No_Work_Hours
1/12/2016 |   1   |   12    | 44%  |     3
1/12/2016 |   2   |   12    | 68%  |     0 
1/12/2016 |   3   |   12    | 54%  |     6
1/12/2016 |   3   |   13    | 24%  |     5

我当前的GroupBy语句在一个班次(无论是日期还是机器)中将所有“无工作”添加到一起:

using (var db = new ProductionContext())
{
   var query2 = from b in db.MU_Reports
                join downtime in db.Downtime_Reports on b.Shift equals downtime.Shift
                where downtime.Downtime_Code.Equals("R09185")
                group downtime by new { b.Date, b.Shift, b.Machine_Number, b.MU } into g
                select new
                {
                      Date = g.Key.Date,
                      Shift = g.Key.Shift,
                      Machine = g.Key.Machine_Number,
                      MU = g.Key.MU,
                      No_Work_Hours = g.Sum(x => x.Total_DownTime)
                };
   query2.ToList();
}

正如您在我的示例输出中所看到的,我想要做的是同时在特定日期,班次和机器中添加所有No Work。因此换句话说,我必须通过Down_Time表来查看正确的日期然后查看这些日期以获得正确的班次然后获得正确的机器然后获得正确的DT理由以获得小时数。

0 个答案:

没有答案