我試圖把這段代碼轉換:在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評論並重試。 –