首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >枚举SPList.Files错误

枚举SPList.Files错误
EN

Stack Overflow用户
提问于 2010-01-27 06:12:34
回答 3查看 1.4K关注 0票数 1

我正在寻找一种将文本文件添加到SharePoint列表的方法,该列表不会枚举整个文件集。根据this SharePoint最佳实践文章,您不应该访问SPList.Files属性,因为它枚举了整个集合。除非你真的想要每一件东西,否则效率很低。我所要做的就是在SharePoint列表的根文件夹中添加一个文本文件。到目前为止,我使用的是以下内容:

代码语言:javascript
复制
using (MemoryStream stream = new MemoryStream())
   {
       StreamWriter writer = new StreamWriter(stream, Encoding.UTF8);

       // write some stuff to the stream ...
       // create a file-name-safe URL ...
       // create a SPFileCollectionAddParameters object ...   

       // add the file
       SPFile newFile = loggingList.RootFolder.Files.Add(fileURL, stream, addProperties);  

}

那么,在这种情况下,枚举SPList.RootFolder.Files是否与枚举SPList.Files相同(因为只有一个包含文本文件的根文件夹),如果是这样,是否有一种方法可以添加单个文件而不枚举文件集合?

提前谢谢。:D

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-27 06:19:58

实际上,调用Files.Add并没有什么问题。简单地访问成员不会枚举集合。如果对它调用GetEnumerator()或在foreach循环中使用它,就会触发枚举。

票数 1
EN

Stack Overflow用户

发布于 2010-01-27 14:56:02

由于不敢使用SPList.Items (类似于SPList.Files,但用在简单的列表中,而不是文档库中),我们创建了一个助手函数,该函数返回一个空集合,因此不会从服务器获取所有项:

代码语言:javascript
复制
public static SPListItemCollection CreateEmptyCollection(SPList List)
 {
   const string EmptyQuery = "0";
   SPQuery q = new SPQuery {Query = EmptyQuery};
   return List.GetItems(q);
 }

然后,在向列表中添加项目时,我们这样做:

代码语言:javascript
复制
ListItem = CreateEmptyCollection(someList).Add("/sites/somesite/lists/somelist/path/to/required/folder", SPFileSystemObjectType.File, "");
票数 0
EN

Stack Overflow用户

发布于 2010-01-28 04:48:39

感谢天真的人。您应该记得我曾经看过一篇文章,它提出了同样的建议,但将其作为SPList上的扩展方法:

代码语言:javascript
复制
public static SPListItem AddItemOptimized(this SPList list, string folderUrl, 
        SPFileSystemObjectType underlyingObjectType, string leafName)
    {
        const string EmptyQuery = "0";
        SPQuery q = new SPQuery
        {
            Query = EmptyQuery
        };
        return list.GetItems(q).Add(folderUrl, underlyingObjectType,leafName);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2143055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档