Исходя из предложений, я пытаюсь использовать List.GetItems (Query) для получения моего начального подмножества данных, а не всего содержимого списка через List.Items. Однако, хотя List.Items.Cast () приводит к полезному IEnumerable для Linq, List.GetItems (Query) .Cast () - нет.
Рабочий код:
IEnumerable<SPListItem> results = SPContext.Current.Web.Lists[ListName].Items.Cast<SPListItem>().Where(item => item["Date"] != null).Where(item => DateTime.Parse(item["Date"].ToString()) >= StartDate).Where(item => DateTime.Parse(item["Date"].ToString()) <= EndDate);
MessageLine = results.Count().ToString();
нерабочий код:
string SPStartDate = SPUtility.CreateISO8601DateTimeFromSystemDateTime(this.StartDate);
string SPEndDate = SPUtility.CreateISO8601DateTimeFromSystemDateTime(this.EndDate);
SPQuery MyQuery = new SPQuery();
MyQuery.Query = "<Where><And><And><Geq><FieldRef Name='Date'/><Value Type='DateTime'>" + SPStartDate + "</Value></Geq><Leq><FieldRef Name='Date'/><Value Type='DateTime'>" + SPEndDate + "</Value></Leq></And></Where>";
IEnumerable<SPListItem> results = SPContext.Current.Web.Lists[ListName].GetItems(MyQuery).Cast<SPListItem>();
MessageLine = results.Count().ToString();
Метод List.GetItems (Query) .Cast () создает следующее исключение в строке .Count ():
Microsoft.SharePoint.SPException:
Не удается выполнить это действие. пожалуйста
Попробуйте снова. --->
System.Runtime.InteropServices.COMException
(0x80004005): не могу завершить это
действие. Пожалуйста, попробуйте еще раз. в
Microsoft.SharePoint.Library.SPRequestInternalClass.GetListItemDataWithCallback (String
bstrUrl, String bstrListName, String
bstrViewName, String bstrViewXml,
SAFEARRAYFLAGS fSafeArrayFlags,
ISP2DSafeArrayWriter pSACallback,
ISPDataCallback pPagingCallback,
ISPDataCallback pSchemaCallback) в
Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback (String
bstrUrl, String bstrListName, String
bstrViewName, String bstrViewXml,
SAFEARRAYFLAGS fSafeArrayFlags,
ISP2DSafeArrayWriter pSACallback,
ISPDataCallback pPagingCallback,
ISPDataCallback pSchemaCallback) ---
Конец внутренней трассировки стека исключений ---
в
Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback (String
bstrUrl, String bstrListName, String
bstrViewName, String bstrViewXml,
SAFEARRAYFLAGS fSafeArrayFlags,
ISP2DSafeArrayWriter pSACallback,
ISPDataCallback pPagingCallback,
ISPDataCallback pSchemaCallback) в
Microsoft.SharePoint.SPListItemCollection.EnsureListItemsData ()
в
Microsoft.SharePoint.SPListItemCollection.Undirty ()
в
Microsoft.SharePoint.SPBaseCollection.System.Collections.IEnumerable.GetEnumerator ()
в
System.Linq.Enumerable.d__aa 1.MoveNext()
at
System.Linq.Enumerable.Count[TSource](IEnumerable
1
источник) в
Test.GetTransactionsInPeriod () в
Test.CreateChildControls ()
Может кто-нибудь предложить что-нибудь?