Rechercher des répertoires dans une liste

Publié le par Laurent (Aka Suchii)

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)

Publié dans CAML

Commenter cet article