以下是我的数据表中的行:
TemplateName Task Days
PT_Case Assign Acceptance Task 83
PT_Case Assign Acceptance Task 64
PT_Case Assign Metadata Task 65
PT_Case Assign Metadata Task 93
PT_Type Complete Metadata Task 67
PT_Type Complete Metadata Task -3
PT_Type Assign Acceptance Task 67
PT_Type Assign Acceptance Task 61
我需要通过linq查询输出以下内容:
TemplateName Task Days TotalDays
PT_Case Assign Acceptance Task 73 152
PT_Case Assign Metadata Task 79 152
PT_Type Complete Metadata Task 32 96
PT_Type Assign Acceptance Task 64 96
注意:“天数”计算为任务天数的平均值。 请建议,如何实现它。提前谢谢。
答案 0 :(得分:0)
var query = from r in dt.AsEnumerable()
group r by r.Field<string>("TemplateName") into templates
let totalDays = templates.Sum(r => r.Field<int>("Days"))
from t in templates
group t by new
{
TemplateName = templates.Key,
Task = t.Field<string>("Task"),
TotalDays = totalDays
} into tasks
select new
{
tasks.Key.TemplateName,
tasks.Key.Task,
Days = tasks.Sum(r => r.Field<int>("Days")),
tasks.Key.TotalDays
};
按模板名称对行进行分组,并计算模板的总天数。然后,它按任务对模板行进行分组,并计算任务的天数。多数民众赞成我如何理解你想做什么。但结果与您的预期结果不同(我不明白您是如何得到这些值的):
TemplateName Task Days TotalDays
PT_Case Assign Acceptance Task 147 305
PT_Case Assign Metadata Task 158 305
PT_Type Complete Metadata Task 64 192
PT_Type Assign Acceptance Task 128 192