Как я могу получить отображаемое имя пользователя из значения LookupId?
var doc = Task.Run(() => graphClient.Drives[driveId].Items[item.Id].GetAsync(requestConfiguration => requestConfiguration.QueryParameters.Expand = new string[] { "ListItem", "Versions" })).Result;

Вот еще немного моего кода: это простое тестовое приложение, в котором текстовое поле получает полный URL-адрес списка SharePoint, а затем перебирает подсписки и документы, получая метаданные для документов. Все это работало, за исключением полей списка, где у меня было значение fieldLookupId вместо имени. Я добавил строку для получения ui, чтобы иметь возможность сохранить идентификатор списка информации о пользователе для использования, когда он мне понадобится.
private void button1_Click(object sender, EventArgs e)
{
var options = new ClientSecretCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};
var scopes = new[] { "https://graph.microsoft.com/.default" };
var clientSecretCredential = new ClientSecretCredential("***", "***", "***", options);
graphClient = new GraphServiceClient(clientSecretCredential, scopes);
try
{
int i = textBox1.Text.IndexOf("/sites");
siteId = textBox1.Text.Substring(0, i);
List parts = new List(textBox1.Text.Substring(i + 7).Split('/'));
string url = siteId + "/sites/" + parts[0] + "/" + parts[1];
i = siteId.IndexOf("/");
siteId = siteId.Substring(i + 2) + ":/sites/" + parts[0];
var uil = Task.Run(() => graphClient.Sites[siteId].Lists.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Select = new string[] { "system", "id", "displayName" };
requestConfiguration.QueryParameters.Filter = "displayName eq 'User Information List'";
})).Result;
var site = Task.Run(() => graphClient.Sites[siteId].GetAsync(requestConfiguration => requestConfiguration.QueryParameters.Expand = new string[] { "drives", "lists" })).Result;
string lists = string.Empty;
i = 0;
foreach (var l in site.Lists)
lists += $"{i++} {l.DisplayName}\r\n";
parts.RemoveAt(0);
var u = Task.Run(() => graphClient.Sites[siteId].Lists.GetAsync(requestConfiguration => requestConfiguration.QueryParameters.Filter = "DisplayName eq 'User Information List'")).Result;
foreach (var drive in site.Drives)
{
if (drive.WebUrl == url)
{
driveId = drive.Id;
parts.RemoveAt(0);
url += "/" + parts[0];
DriveItem driveItem = GetDriveItem("root", parts[0], url);
parts.RemoveAt(0);
while (driveItem != null && parts.Count > 0)
{
url += "/" + parts[0];
driveItem = GetDriveItem(driveItem.Id, parts[0], url);
parts.RemoveAt(0);
}
if (driveItem == null)
throw new Exception("Unable to find " + textBox1.Text);
var contents = Task.Run(() => graphClient.Drives[driveId].Items[driveItem.Id].Children.GetAsync()).Result;
foreach (var item in contents.Value)
{
if (item.Folder == null)
ProcessDocument(item, item.Name);
else
{
//create sub folder
ProcessFolder(item, item.Name);
}
}
break;
}
}
}
catch (Exception ex)
{
if (ex.InnerException == null)
MessageBox.Show(ex.Message);
else
MessageBox.Show(ex.InnerException.Message);
}
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... upid-field
Мобильная версия