Linq查询sharepoint服务器上的所有站点和子站点?

时间:2010-06-30 17:13:04

标签: c# .net linq sharepoint-2010

我正在开发一个用于sharepoint 2010安装的webpart。这有多个站点,每个站点都有页面,并且可能有子站点,本身有更多页面和站点。我想获得整个安装中符合特定条件的所有页面的列表(例如title == "Test")。

我可以使用CAML SPSiteDataQuery对象并将“Webs”属性设置为<Webs Scope="Recursive" />。显然,这会使查询考虑当前站点和所有子站点。

另一方面,我想尽可能使用linq2sp,因为它将为其他开发人员提供更容易的学习曲线。使用SPMetal我可以为我的站点生成一个DataContext,然后可以使用linq查询它,但是这只会访问根站点中的页面。

是否有某种方法可以控制Linq查询的范围,使其适用于所有网站中的所有网页?

感谢,   小号

1 个答案:

答案 0 :(得分:1)

......反思......看来你(和我们所有人)都运气不好。 LINQ to Sharepoint将查询转换为SPQuery对象,这些对象只能用于查询特定列表。在Microsoft.SharePoint.Linq程序集中的任何位置都不使用SPSiteDataQuery。 我想你可以遍历执行相同查询的所有列表但这样效率非常低。

您只能使用EntityList< TEntity>.ScopeToFolder方法将特定列表范围限定为文件夹。

可能的解决方法是使用支持this one等跨站点查询的自定义Sharepoint LINQ提供程序。我没用过它所以我不能保证它。