按内容类型获取网站集中的所有文件

时间:2012-03-01 18:21:29

标签: c# sharepoint sharepoint-2010

是否可以按整个网站集中的内容类型获取所有文件?这是我目前的代码:

//Get list of subsites to traverse
            List<string> subsites = getSubSiteList();
            foreach (string siteUrl in subsites)
            {
                using (SPWeb web = new SPSite(siteUrl).OpenWeb())
                {
                    if (web.GetFolder("Pages").Exists)
                    {
                        //Get Pages Folder from subsite                    
                        SPFolder folderCol = web.Folders["Pages"];

                        //Set files in Pages folder
                        SPFileCollection fileCol = folderCol.Files;
                        foreach (SPFile file in fileCol)
                        {
                            //Debug.WriteLine("File in site: " + siteUrl + " file: " + file.Name);
                        }
                    }
                    web.Dispose();
                }
            }

在这段代码中,我遍历所有子网站并转到“Pages”文件夹以获取某个页面,但我希望能够只需提取所有这些文件,而无需遍历每个子网站,并获取它通过内容类型而不是进入“Pages”文件夹并从那里解析。代码怎么样?谢谢!

2 个答案:

答案 0 :(得分:3)

您要找的是site data query

其他选项是以编程方式利用搜索功能,但我不认为它与选项一样好;网站数据查询就是为此而设计的。

答案 1 :(得分:0)

你可以尝试这样的东西来获取所有网站以及子网站 请参阅此MSDN站点以获取可以使用的不同选项的列表。 How to: Enumerate Sites and Site Collections

SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsite = oSiteCollection.AllWebs;

for (int i = 0; i < collWebsite.Count; i++)
{
    using (SPWeb oWebsite = collWebsite[i])
    {
        SPListCollection collList = oWebsite.Lists;

        for (int j = 0; j < collList.Count; j++)
        {
            Label1.Text += SPEncode.HtmlEncode(collWebsite[i].Title) + "   "
                + SPEncode.HtmlEncode(collList[j].Title) + "<BR>";
        }
    }