Sharepoint 2010,获取用户配置文件属性的独特值?

时间:2010-06-07 19:28:31

标签: .net sharepoint-2010

SharePoint 2010中是否有任何方法可以在所有用户中获取属性的Distinct值?例如,我想要一个Profile Store中所有部门的列表。

在SQL中我可以做到

SELECT DISTINCT(PropertyVal) FROM [ProfileDB].[dbo].[UserProfileValue]
WHERE PropertyID = 14

但是访问SQL数据库当然是一个很大的禁忌,所以我想知道对象模型中是否存在某些内容?

请注意,访问SPSite上的用户信息列表不够好,因为只有一小部分用户在该列表中。我想直接从Profile Store中获取它。

3 个答案:

答案 0 :(得分:0)

博客条目Sharepoint User Profiles介绍了如何从中央配置文件存储中获取所有用户配置文件。 MSDN具有description UserProfileManager类和configuring the user Profile store using the object model

在所有情况下,似乎都需要SPSite来提供上下文。您应该能够通过传入sharepoint服务器的URL来获取所有配置文件。 UserProfileManager.UserProfiles集合提供对所有用户配置文件的访问权限。

要获取所有用户的配置文件属性的所有不同值,请迭代所有配置文件,提取所需的属性值并将其添加到哈希集。在迭代结束时,hashset保存所有不同的值。

它不会像直接查询数据库那样高效 - 对象模型似乎不是按照您想要的方式对数据进行切片 - 但它会通过官方支持的通道提供结果。 / p>

答案 1 :(得分:0)

所以听起来你有几个选择而且都不理想......

  1. 您获取所有配置文件,循环并将唯一值添加到哈希表中以选择不同的值。虽然这也需要很多权限来执行此操作。

  2. 将SP添加到数据库并在那里执行,并且可能让Sharepoint团队更改数据库格式。这可能不受支持,但它也可能不太危险,它不像你正在改变表格格式,并且你可以在sharepoint团队确实做出改变的情况下重写sp。

  3. 如果我有这个任务,我很可能会创建存储过程

答案 2 :(得分:-1)

我选择了直接查询Sharepoint数据库的方法。不是很好,但实用主义赢了。