1

クライアント プログラムで SharePoint リストから名前のリストを取得しています。名前は、SharePoint の名前ピッカーから入力されます。リスト クエリから返される XML では、リストは次のようになります。

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

私のプログラムは、各ユーザーのアカウント名 (または電子メール アドレス) を取得する必要があります。を使用できますGetUserProfileByName("domain\\username")が、アカウント名がありません。GetUserProfileByName("Some Name")アカウント名でなければならないので、私は何かをすることはできません。

各名前の前の数字はインデックスまたは ID ですがGetUserProfileByIndex(10)、自分のデータを管理する必要があるか、管理者の資格情報を持っている必要があるため、使用できません。

つまり、基本的に 2 つの重要な情報が提供されますが、それらを使用してそれ以上の情報を取得することはできません。

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

私は非常に厄介な解決策を持っていますが、適切でエレガントな解決策についていくつかのアイデアを聞きたいです.

現在GetListItems、リストで使用してエントリUserInfoの辞書を作成し、リストクエリからの文字列を解析して名前に変換し、それらをルックアップ値として使用しています。ows_ImnNameows_Name

もっと良い方法があるはずです。

于 2011-02-09T02:51:26.843 に答える