欢迎使用C#或VB.NET建议。
表关系:
时间表1:N TimeRecord(FK TimeSheetId)
Dim query = From s In db.Students _
Let pair = (From ts In db.TimeSheets _
Join tr In db.TimeRecords On tr.TimeSheetId Equals ts.TimeSheetId _
Where ts.IsArchive = False And ts.IsCompleted = False _
Group By key = New With {ts.TimeSheetId, ts.StudentId} Into TotalHour = Sum(tr.BonusHour)) _
From part In pair _
Where part.key.StudentId = s.StudentId _
Select New With {.StudentId = s.StudentId, .AssignedId = s.AssignedId,.TotalTime = part.TotalHour}
以下是查询结果:
通缉查询结果:
有些TimeSheet没有TimeRecord,我也需要选择它。如何选择所有这些以进行如上所述的选择?我在考虑如何包含一些条件 检查查询以查看此TimeSheet是否没有TimeRecord,然后不需要Sum(tr.BonusHour)只将TotalHour分配给零。我不知道这是正确的方法。
欢迎任何消化。
答案 0 :(得分:0)
您可以尝试使用Sum
(C#)执行此类操作:
Sum(tr.BonusHour ?? 0)
与
相同Sum(tr.BonusHour != null ? tr.BonusHour : 0)
我不确定您BonusHour
的类型是什么,因此您将使用此类型的零通信对象而不是示例中的0
。