これを行うには、からユーザーのリストを取得し、返された各アイテムの をClientContext.Current.Web.SiteUserInfoList
チェックして、それが何であるかを判断します。ContentType
ただし、各アイテムから実際に返されるのは のみであるため、コンテンツ タイプの確認はあまり直接的ではありませんContentTypeID
。これを、 のユーザー リストのコンテンツ タイプと照合する必要がありますClientContext.Current.Web.SiteUserInfoList.ContentTypes
。そのルックアップは ContentType オブジェクトを返し、Name
そのオブジェクトのプロパティから読み取って、リスト項目が何であるかを確認できます。
したがって、これを行うための単純化されたコードのチャンクは次のようになります。
using Microsoft.SharePoint.Client;
...
ClientContext context = ClientContext.Current;
var q = from i in context.Web.SiteUserInfoList.GetItems(new CamlQuery()) select i;
IEnumerable<ListItem> Items = context.LoadQuery(q);
context.ExecuteQueryAsync((s, e) => {
foreach (ListItem i in Items) {
//This is the important bit:
ContentType contenttype = context.Web.SiteUserInfoList.ContentTypes.GetById(i["ContentTypeId"].ToString());
context.Load(contenttype); //It's another query so we have to load it too
switch (contenttype.Name) {
case "SharePointGroup":
//It's a SharePoint group
break;
case "Person":
//It's a user
break;
case "DomainGroup":
//It's an Active Directory Group or Membership Role
break;
default:
//It's a mystery;
break;
}
}
},
(s, e) => { /* Query failed */ }
);
プラットフォームは指定されませんでしたが、SharePoint クライアント オブジェクト モデルを使用して、Silverlight でこれらすべてを実行しました。JavaScriptでも同じことが可能であることは当然です。