我正在尝试使用 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 循环和 if 条件,我的代码看起来非常必要。
而不是 for 循环,我想做一些类似 List.map 但是这些对象中的大多数,如 RoleDefinitionBindings 或 RoleAssignments 都返回给我不是列表、数组或序列的集合,所以我不得不编写循环。
当返回类型是自定义集合对象(如 SPRoleAssignmentCollection 和 SPRoleDefinitionBindingCollection)时,您能告诉我一种避免循环的方法吗?