1

我正在从客户端程序中的 SharePoint 列表中检索名称列表。这些名称是从 SharePoint 中的名称选择器填充的。在从列表查询返回的 XML 中,列表如下所示:

"#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName"

我的程序需要获取每个用户的帐户名(或电子邮件地址)。我可以使用GetUserProfileByName("domain\\username"),但我没有帐户名。我不能这样做,GetUserProfileByName("Some Name")因为它必须是帐户名。

每个名称前的数字是索引或 ID,但我不能使用GetUserProfileByIndex(10),因为我必须管理自己的数据或拥有管理员凭据。

所以基本上它为我提供了两条重要的信息,但我无法使用它们检索任何进一步的信息。

4

2 回答 2

1

你确定这个数字是一个索引,我认为它可能是网站集的用户 ID。它似乎也是一种奇怪的用户列表,但无论如何:

string result = "#10;#Some Name;#12;#Another Name;#15;#Yet AnotherName";
string[] users = result.Substring(1).Split(new string[2] { ";", "#" }, StringSplitOptions.RemoveEmptyEntries);
for (int j = 0; j < users.Length; j = j + 2) {
    using (ClientContext context = new ClientContext("http://yoursite")) {
        List list = context.Web.SiteUserInfoList;
        ListItem item = list.GetItemById(int.Parse(users[j]));
        context.Load(item, i => i.Id, i => i["Name"]);
        context.ExecuteQuery();
        object username = item["Name"];
    }
}
于 2011-02-09T04:22:23.413 回答
0

我有一个非常混乱的解决方案,但我很想听听一些关于适当/优雅解决方案的想法。

现在我GetListItemsUserInfo列表中使用并创建一个ows_ImnNameows_Name条目的字典,然后将列表查询中的字符串解析为名称并将它们用作查找值。

必须有更好的方法。

于 2011-02-09T02:51:26.843 回答