Используйте Microsoft Graph 5.0 SDK, чтобы получить отображаемое имя из поля LookupId элемента списка.C#

Место общения программистов C#
Ответить
Anonymous
 Используйте Microsoft Graph 5.0 SDK, чтобы получить отображаемое имя из поля LookupId элемента списка.

Сообщение Anonymous »

Я получил элемент в списке и получил данные поля, несколько полей являются пользователями, но возвращаемым значением является LookupId, и мне нужно отображаемое имя. В Интернете в основном речь идет о запросе списка «Список информации о пользователях» на сайте, но это функция версии 1.0, и я не могу найти этот список в версии 5.0.
Как я могу получить отображаемое имя пользователя из значения 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»