Rechercher des répertoires dans une liste
Avez-vous déjà eu besoin de rechercher tous les répertoires dans une bibliothèque de document et ce, récurcivement ? Au cas où, un jour, le besoin s'en ferait sentir, voici un exemple de code permettant de réaliser cette tâche :
SPSite mySiteCollection = new SPSite("http://xxxx:8080");
// Récupération de la liste sur laquelle va porter la recherche
SPList myList = mySiteCollection.RootWeb.Lists["MyListeName"];
String valueToSearch = "XYZ"; // On veut rechercher tous les répertoires contenant XYZ
StringBuilder queryBuilder = new StringBuilder();
// Construction de la requête CAML
queryBuilder.Append("<Where>");
queryBuilder.Append(" <And>");
queryBuilder.Append(" <Eq>");
queryBuilder.Append(" <FieldRef Name="ContentType" />");
queryBuilder.Append(" <Value Type="Text">Folder</Value>");
queryBuilder.Append(" </Eq>");
queryBuilder.Append(" <Contains>");
queryBuilder.Append(" <FieldRef Name="Title" />");
queryBuilder.Append(String.Format(" <Value Type="Text">{0}</Value>",valueToSearch));
queryBuilder.Append(" </Contains>");
queryBuilder.Append(" </And>");
queryBuilder.Append("</Where>");
SPQuery query = new SPQuery();
query.Query = queryBuilder.ToString();
// On précise que la recherche sera faite récursivement
query.ViewAttributes = "Scope="RecursiveAll"";
// Exécution de la requête et récupération des résultats
SPListItemCollection result = myList.GetItems(query);
// Faite vos traitements ici ...
Voilà, c'était juste un petit pense bête ... A+
Laurent
(Aka Suchii)