Sometimes we need to process all webs in a site collection, as you want to do some quick fixes in the web.
//Starting point public void ProcessAllWeb(SPSite site) { using (var web = site.RootWeb) { ProcessWebRecursive(web); } } //Recursive method private static void ProcessWebRecursive(SPWeb web) { //do some processing //web.Lists["listName"].ItemCount foreach (SPWeb subWeb in web.Webs) { using (subWeb) { ProcessWebRecursive(subWeb); } } }
The following code snippet shows the efficient way of processing all webs in the site collection:public void ProcessAllWeb(SPSite site) { string[] allWebUrls = site.AllWebs.Names; foreach (string webUrl in allWebUrls) { using (SPWeb web = site.OpenWeb(webUrl)) { //process web } } }
No comments:
Post a Comment