SPQuery: count items

Per recuperare il numero degli items di una lists per una determinata Query, eventualmente creata a run time, la sintassi base che uno scriverebbe è la seguente:

 

int ItemCount;
SPQuery query = new SPQuery();
query.Query = view.Query;
ItemCount = list.GetItems(query).Count;

 

da questo snippet ho omesso il RowLimit perchè altrimenti non avrei una Count valida, supponendo di creare un paginatore. 

Ma qui ho riscontrato un enorme problema, i tempi di risposta, perchè il GetItems anche se alla fine richiediamo il Count comunque restituisce tutti gli items e poi ritorna il totale, ho notato che già con 3000 items i tempi di attesa si aggirano sui 10/14 secondi (un botto!!!).

La soluzione è banalissima, comunque siamo costretti a fare il GetItems, ma considerato che abbiamo necessità solo di una Count cerchiamo di minimizzare il tutto e quindi nella mia query specificherò che i ViewFields dovranno essere solamente 1 cioè l'ID (numerico), quindi insieme allo snippet di prima aggiungeremo anche:

 

query.ViewFields = "<FieldRef Name='ID' />";

 

Kid's stuff

 

Error occurred in deployment step 'Activate Features': A timeout has occurred while invoking commands in SharePoint host process.

Bene, dopo una giornata intera a cercare di effetture un deploy della solution di SharePoint tramite Visual Studio ma con scarsissimi risultati (vedi titolo del POST) ho trovato nella rete la seguente procedura:

Apri il RegEdit.exe

vai nel folder HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\SharePointTools

aggiungere se non esiste la chiave 

ChannelOperationTimeout

REG_DWORD

Decimal -> 800 (il valore è in secondi)

Kid's stuff ;)

Month List