クライアント オブジェクト モデルの使用 SharePoint サーバーを検索し、一意の ID (GUID) を指定して特定のサブサイトが存在するかどうかを判断する最も効率的な方法を探しています。サイトに戻る必要があり、GUID は変更できない唯一のプロパティであるため、GUID を外部システムに保存しています。CAML を使用して特定のサイト内のデータを検索できることを知っています。ただし、サブサイトに対してこれを行う API を見つけることができませんでした。再帰的な検索を実行し、for ループを使用する必要があります。私の場合、サーバー上に何千ものサイトをネストすることができました。
このロジックは 1 つのレベルを処理しますが、何千ものサブサイトが存在する場合は効率的ではありません。
public bool SiteExists(ClientContext context, string myGuid)
{
Web oWebsite = context.Web;
context.Load(oWebsite, website => website.Webs, website => website.Title, website => website.Description, website => website.Id);
context.ExecuteQuery();
for (int i = 0; i != oWebsite.Webs.Count; i++)
{
if (String.Compare(oWebsite.Webs[i].Id.ToString(), myGuid, true) == 0)
{
return true;
}
}
return false;
}