0

我需要一种简单的方法来获取最新的 5 个创建的网站。

我知道每个网站都有一个 Created Date 属性。

我想在没有 foreach 的情况下执行此操作,因为可以有 1000 个子站点。

任何的想法?

 using (SPSite clientSiteCollection = new SPSite(currentUrl))
            {
                foreach (SPWeb web in clientSiteCollection.AllWebs.Select(c => c.Properties["WebTemplate"] == "xx").OrderByDescending(d => d.Created).Take(5))
                {
4

2 回答 2

1

你可以使用 Linq。这将与此类似。

var newestSites = clientSiteCollection.AllWebs.OrderByDescending(p=>p.CreatedDate).ToList().Take(5);
// Now NewestSites is a collection of your top 5 newest created Sites.
于 2013-06-04T13:40:08.000 回答
0

我建议您针对 SharePoint 搜索构建 KeywordQuery,在其中指定您只希望“SPWeb”作为搜索结果并将托管属性“Created”作为查询中的条件传递。像这样的东西:

myQuery.QueryText = "contentclass:STS_web Created>6/1/2013"

构建关键字查询: http ://dotnetmafia.com/blogs/dotnettipoftheday/archive/2013/01/03/how-to-use-the-sharepoint-2013-search-keywordquery-class.aspx

此外,您将 KeywordQuery 配置为只需要 5 个结果:

myQuery.RowLimit = 5;

并且您希望它们按降序按“已创建”排序:

myQuery.SortList.Add("Created", SortDirection.Descending);

排序搜索查询:http ://dotnetmafia.com/blogs/dotnettipoftheday/archive/2013/01/03/how-to-sort-search-queries-in-sharepoint-2013.aspx

于 2013-06-04T16:21:00.440 回答