私はかなり簡単なことをしようとしていますが、SharePoint APIでは不可能な仕事のようです。複雑なSharepointオブジェクトを処理するために、独自のオブジェクトモデルを作成する必要がありますか?
マイSharePointのデータ構造は次のようである:
-folder
---サブフォルダ
--------項目
--------項目B
--------項目C
--------項目D
あなたが期待する階層的にフォルダとサブフォルダにアクセスすることはできませんいくつかの奇妙な理由のために!リストを反復処理すると、階層構造を無視してすべての項目が返されます(リスト内のすべてが返されます)。さらに、コード内の構造を管理するためにアイテムがFolderかどうかを知ることはできません。
今私はSharePointオブジェクトモデルをより意味のあるものにするためにカスタムオブジェクトを作成しており、期待した階層構造のデータをグループ化しています。
public class Folder
{
public Folder Parent {get; set;}
public Folder Root {get; set;}
public IList<Item> Items {get; set;}
}
は誰でも似たような行っているか、どのようにSharePointでこの制限を管理しました:次のように私のSharePointアイテムをマッピングするために私が計画していますか?
私のカスタムオブジェクトモデルへのマッピングを開始した場合、何か教訓と注意が必要ですか?
EDIT:
私の最終的な解決策はlist.RootFolder.SubFoldersから始まるフォルダをループすぎでした。
var query = from SPList list in Utils.GetList(webRelativeUrl, listName)
from SPFolder folder in list.RootFolder.SubFolders
where folder.Name.ToLower() != "forms"
select new Folder //Custom Object
{
Name = folder.Name,
Children = (from SPFolder subFolder in folder.SubFolders //Further looping of sub folders
select new Folder
{
Name = subFolder.Name,
Items = (from SPFile file in subFolder.Files
select new Item
{
//Mapping code omitted
} ).ToList()
}
{)
}
return query.ToList();
このチップありがとう。私は最終的に私が欲しかったのと同じようにこのルートに行きました。私は使用したサンプルコードを表示するために投稿を編集しました。どうもありがとう –