1

ファイル セット全体を列挙しないテキスト ファイルを SharePoint リストに追加する方法を探しています。このSharePoint のベスト プラクティスの記事によると、コレクション全体を列挙するため、SPList.Files プロパティにはアクセスしないでください。実際にすべてのアイテムが必要でない限り、非常に非効率的です。やりたいことは、SharePoint リストのルート フォルダーに 1 つのテキスト ファイルを追加することだけです。これまでのところ、私は以下を使用しています:

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

4

3 に答える 3

1

実際には、Files.Add を呼び出すことに何の問題もありません。メンバーにアクセスするだけでは、コレクションは列挙されません。これに対して GetEnumerator() を呼び出すか、foreach ループで使用すると、列挙がトリガーされます。

于 2010-01-26T22:19:58.240 に答える
0

ナイビストに感謝します。以前、SPList の拡張メソッドとして同じことを提案した記事を見たことがあることを思い出してください。

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);
    }
于 2010-01-27T20:48:38.887 に答える
0

使用することを恐れてSPList.Items( に似てSPList.Filesいますが、ドキュメント ライブラリではなく単純なリストで使用されます)、空のコレクションを返すヘルパー関数を作成しました。したがって、サーバーからすべてのアイテムを取得するわけではありません。

public static SPListItemCollection CreateEmptyCollection(SPList List)
 {
   const string EmptyQuery = "0";
   SPQuery q = new SPQuery {Query = EmptyQuery};
   return List.GetItems(q);
 }

次に、リストにアイテムを追加するときは、次のようにします。

ListItem = CreateEmptyCollection(someList).Add("/sites/somesite/lists/somelist/path/to/required/folder", SPFileSystemObjectType.File, "");
于 2010-01-27T06:56:02.343 に答える