Я выполняю этот запрос на том же сервере, что и веб-приложение, поэтому SPQuery.ExpandRecurrence должен работать. Тем не менее, благодаря следующему я получаю только 3 элемента в возвращенной коллекции списков против 3 элементов и повторных вхождений, которые попадают в текущий месяц.
Я проверил с помощью Stramit Caml Viewer, что запрос работает, и возвращает те же 3 элемента.
Пожалуйста, скажите мне, что я упускаю что-то явно очевидное?
static SPListItemCollection GetSourceColl(SPList list)
{
SPQuery query = new SPQuery();
query.ExpandRecurrence = true;
query.CalendarDate = new DateTime(DateTime.Now.Year,DateTime.Now.Month, 1);
System.Text.StringBuilder oSb = new System.Text.StringBuilder();
oSb.Append(" <Query xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\">");
oSb.Append(" <Where>");
oSb.Append(" <And>");
oSb.Append(" <DateRangesOverlap>");
oSb.Append(" <FieldRef Name=\"EventDate\" />");
oSb.Append(" <FieldRef Name=\"EndDate\" />");
oSb.Append(" <FieldRef Name=\"RecurrenceID\" />");
oSb.Append(" <Value Type=\"DateTime\">");
oSb.Append(" <Month />");
oSb.Append(" </Value>");
oSb.Append(" </DateRangesOverlap>");
oSb.Append(" <And>");
oSb.Append(" <And>");
oSb.Append(" <Eq>");
oSb.Append(" <FieldRef Name=\"Status\" />");
oSb.Append(" <Value Type=\"Text\">Finalized</Value>");
oSb.Append(" </Eq>");
oSb.Append(" <Leq>");
oSb.Append(" <FieldRef Name=\"DistributionStartDate\" />");
oSb.Append(" <Value Type=\"DateTime\">");
oSb.Append(" <Today />");
oSb.Append(" </Value>");
oSb.Append(" </Leq>");
oSb.Append(" </And>");
oSb.Append(" <Neq>");
oSb.Append(" <FieldRef Name=\"Distribution\" />");
oSb.Append(" <Value Type=\"Text\">Intranet</Value>");
oSb.Append(" </Neq>");
oSb.Append(" </And>");
oSb.Append(" </And>");
oSb.Append(" </Where>");
oSb.Append(" </Query>");
query.Query = oSb.ToString();
return list.GetItems(query);
}