F#を使用してSharePoint 2010オブジェクトを操作しようとしています(実験と同じように)。
だから私はこのコードを書きます
let getSPDomainUsers (spWeb : SPWeb) =
seq {
for r in spWeb.RoleAssignments do
match r.Member with
| :? SPUser as user ->
for b in r.RoleDefinitionBindings do
if (user.IsDomainGroup) then yield (spWeb.Url.ToLower(), user, b.Name.ToLower())
| :? SPGroup as group ->
for u in group.Users do
for b in r.RoleDefinitionBindings do
if (u.IsDomainGroup) then yield (spWeb.Url.ToLower(), u, b.Name.ToLower())
| _ -> ()
}
ただし、これらすべてのforループと条件がある場合、私のコードは非常に必須に見えます。
forループの代わりにList.mapのようなことをしたいのですが、RoleDefinitionBindingsやRoleAssignmentsのようなこれらのオブジェクトのほとんどは、リスト、配列、シーケンスではないコレクションを返すので、ループを作成する必要があります。
戻り型がSPRoleAssignmentCollectionやSPRoleDefinitionBindingCollectionなどのカスタムコレクションオブジェクトである場合に、ループを回避する方法を教えてください。