我正在制作一个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 相匹配,而其他两个属性却不匹配。再试一次,这是我得到的最接近的。有人可以帮我吗?预先感谢。