在没有for循环的情况下在sharepoint中获取前5个创建的子网站

时间:2013-06-04 13:28:46

标签: c# linq sharepoint

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

我知道每个网站都有一个创建日期属性。

我想在没有预告的情况下这样做,因为可以有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))
                {

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

我建议您针对SharePoint搜索构建KeywordQuery,您可以在其中指定只需要“SPWeb”作为搜索结果,并将托管属性“已创建”作为查询中的条件传递。像这样:

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

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

此外,您只需要5个结果即可配置KeywordQuery:

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