我正在制作一个 Web API 以将数据从 Project Online 获取到我的 C# 应用程序。我已经完成了连接并毫无问题地加载了我的时间表。现在,我的团队负责人要求我获取为登录用户安排的总工作量、剩余工作量以及时间表中显示的每个任务报告的工作量。如果您在选项功能区中选择“查看:我的工作”,则此信息在时间表页面中可见:工时- 创建任务时为用户安排的总工时实际工时- 为登录的用户报告的工作时间剩余工作- 用户任务中的剩余工作
我能够获得计划的总工作量,但不能获得其他两个属性。这是我到目前为止得到的代码:
context.Load(context.TimeSheetPeriods, c => c.Where(p => p.Start <= DateTime.Now && p.End >= DateTime.Now).
IncludeWithDefaultProperties(p => p.TimeSheet,
p => p.TimeSheet.Manager,
p => p.TimeSheet.Manager.Email,
p => p.TimeSheet.Lines.Where(
l => l.LineClass == TimeSheetLineClass.StandardLine).
IncludeWithDefaultProperties(l => l.Assignment,
l => l.Assignment.Owner.Email,
l => l.Assignment.Resource,
l => l.Assignment.Task,
l => l.Work)));
context.ExecuteQuery();
List<TimeSheetLine> linesList = myPeriod.TimeSheet.Lines.ToList();
foreach (TimeSheetLine x in linesList)
{
Console.WriteLine("\nProject name: {0}; Task name: {1}; Work reported: {2}; " +
"Planned work: {3};\n x.Assignment.RegularWork: {4}; x.Assignment.RemainingWork: {5}; x.Assignment.ActualWork: {6};",
x.ProjectName, x.TaskName, x.Work.Where(w => w.Start.Date == DateTime.Now.Date).FirstOrDefault().ActualWork,
x.Work.Where(w => w.Start.Date == DateTime.Now.Date).FirstOrDefault().PlannedWork,
x.Assignment.RegularWork, x.Assignment.RemainingWork, x.Assignment.ActualWork);
}
最后一行是我的问题所在。x.Assignment.RegularWork
给我工作,理论上x.Assignment.RemainingWork
应该给我剩余工作和x.Assignment.ActualWork
实际工作。应该但它没有。这是控制台输出:
如您所见,x.Assignment.RegularWork
与时间表中的Work匹配,但其他两个属性不匹配。尝试后尝试这是我得到的最接近的。谁能帮我一把?提前致谢。