So I’m writing some code to assemble some information about items in a list.
My original approach was this:
SPQuery query = new SPQuery(); query.Query = GenerateLodgedSubmissionsQuery(studentId, activityId); SPListItemCollection submittedItems = submissionsList.GetItems(query); response.SubmittedFiles = CreateFileDetailsList(submittedItems, false); if (0 < submittedItems.Count) { response.ActivityName = submittedItems[0]["ActivityName"].ToString(); response.ActivityId = submittedItems[0]["ActivityId"].ToString(); } query.Query = GenerateReturnedSubmissionsQuery(studentId, activityId); SPListItemCollection returnedItems = submissionsList.GetItems(query);
The problem here was that the second call to GetListItems was returning the exact same results as the first call, despite having changed the Query property of the SPQuery object.
After much second guessing of my CAML query generation code and ensuring that the SPQuery.Query had infact changed I tried making the second GetListItems call with a new SPQuery object:
SPQuery query = new SPQuery(); query.Query = GenerateLodgedSubmissionsQuery(studentId, activityId); SPListItemCollection submittedItems = submissionsList.GetItems(query); response.SubmittedFiles = CreateFileDetailsList(submittedItems, false); if (0 < submittedItems.Count) { response.ActivityName = submittedItems[0]["ActivityName"].ToString(); response.ActivityId = submittedItems[0]["ActivityId"].ToString(); } SPQuery returnedItemsQuery = new SPQuery(); returnedItemsQuery.Query = GenerateReturnedSubmissionsQuery(studentId, activityId); SPListItemCollection returnedItems = submissionsList.GetItems(returnedItemsQuery);
Now I finally saw the results that I was looking for.