2009-01-12 3 views
1

Je souhaite obtenir un élément d'une liste sans charger tous les éléments de la liste. Je sais que je peux le faire en appelant SPList.getElementbyId(myID), mais si je ne sais pas si mon ID existe dans la liste, comment puis-je le vérifier? Oui je pourrais utiliserComment pouvons-nous vérifier l'existence d'éléments par identifiant dans les listes SharePoint?

SPListItem myItem = myList.Items[myID]; 
if (myItem == null) 
{ 
    // log that we don't have this item 
} 

Cependant, de cette façon, quand je vous appelle myList.Items, tous les éléments de la liste sont chargés dans le dans myList objet (et si j'ai 40.000 articles, il est vraiment une question de performace), donc je préfère utiliser:

SPListitem myItem = myList.getElementById(myID); 

de cette façon, je ne vais pas appeler la Items propriété et nous pas besoin de charger ces éléments. Maintenant, le problème est que la méthode getElementById lèvera une exception si cet ID n'existe pas dans la liste. Ce n'est pas une solution de le mettre dans une déclaration try/catch parce que nous pourrions vouloir vérifier plusieurs houndreds d'IDs et la manipulation de tous les throws conduira encore à un problème de performance. A utres idées pour vérifier l'existence d'un élément avec un identifiant donné?

Répondre

2

Vous pouvez créer une requête avec tous les identifiants que vous avez vérifiés et comparer la liste retournée aux identifiants que vous avez vérifiés et déterminer lesquels sont valides ou non.

De cette façon, vous récupérez uniquement ce dont vous avez besoin tout en trouvant toujours ceux qui manquent.

+0

Oui, SPQuery est le chemin. Votre requête pourrait ressembler à ceci: "+ ID +" drax

+0

Et la question ne chargera pas tout le contenu des éléments? Merci pour l'indice! Toutes les autres idées seraient appréciées. – Anatol

Questions connexes