如何在以下查询中处理对subWeb的引用?
using (SPSite spSite = Utility.GetElevatedSite(_rootUrl)) { from SPWeb web in spSite.AllWebs where web.ServerRelativeUrl.ToLower() == path from SPWeb subWeb in web.Webs select subWeb }
如果iam已经在使用语句中包装了spSite,我是否还需要担心处理subWeb?
编辑:
在这种情况下调用垃圾收集是一个好主意吗?
不幸的是,你做到了.麻烦从SPSite.AllWebs属性开始.SPWeb.Web属性也不安全.
阅读这个非常全面的参考资料,您需要担心处置SharePoint对象.
(我建议将其添加到您的SharePoint备忘单中).
因此,我觉得当前的SharePoint对象模型无法安全地与LINQ语法一起使用.
您的代码需要重新编写,并且各种隐含的循环都已分解,以便您可以显式处理所涉及的对象.
编辑: SPDisposeCheck工具是一个命令行控制台应用程序,它将扫描您的.NET程序集并根据上述最佳实践指南警告您未处理的引用.看看这个.
http://code.msdn.microsoft.com/SPDisposeCheck
http://blogs.msdn.com/sharepoint/archive/2008/11/12/announcing-spdisposecheck-tool-for-sharepoint-developers.aspx