我试图把这段代码转换:在C#翻译LINQ表达式
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("9185")
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)
};
要看起来像这样之一:
var query = db.MU_Reports.Join(db.Downtime_Reports, b=> b.Shift, c=> c.Shift, (b , c) => new { b, thisshift = c })
.Where(n => n.thisshift.Down_TIme_Codes.Equals("9185"))
.GroupBy(d=> new { d.b.Date, d.b.Shift, d.b.Machine_Number, d.b.MU }, d => d.b)
.Select (g=> new
{
Date = g.Key.Date,
Shift = g.Key.Shift,
Machine = g.Key.Machine_Number,
MU = g.Key.MU,
No_Work_Hours = g.Sum(i => i.Total_DownTime)
}).ToList();
正如你看到的我是非常密切的。我唯一的问题是最后的声明No_Work_Hours = g.Sum(i => i.Total_DownTime)
它试图从db.MU_Reports
得到Total_DownTime
,但它需要来自db.Downtime_Reports
。我是c#的新手,并且正在做这个来理解我创建的程序更好。
应该不是你为'第二个参数GroupBy'被字符'D => d.thisshift'代替字符'D => db' ? – juharr
@juharr否,因为'MU'只存在于'd.b.MU'而不是'd.thisshift.MU'中 – JCM
仔细阅读@juharr评论并重试。 –