C# Sharepoint CSOM - 获取 FieldValue 的显示名称

C# Sharepoint CSOM - Get the Display Name of a FieldValue

我正在尝试使用 C# Sharepoint CSOM 显示文件元数据的值(文件创建者、上次更新时间等)。

我创建了一个函数:

public static void PrintFileMeta(string path)
{
        using (var context = GetContext())
        {
            File file = context.Web.GetFileByServerRelativeUrl(path);

            var item = file.ListItemAllFields;

            context.Load(file, f => f.ListItemAllFields);

            context.ExecuteQuery();


            foreach (string fieldName in item.FieldValues.Keys)
            {
                Console.Write(fieldName);
                Console.WriteLine(item.FieldValues[fieldName]);
            }

        }
}

然而,这会打印元数据的内部名称,例如'Created_x0020_By' 而不是 'Created By'(或者元数据的显示名称恰好是什么)。有没有办法打印显示名称?我已经搜索和测试了一段时间,但一直未能找到任何可以解决问题的方法。

这是代码。 您需要从 item.ParentList 加载 Fields 集合,然后按 InternalName:

搜索它
public static void PrintFileMeta(string path)
{
    using (ClientContext context = GetContext())
    {
        File file = context.Web.GetFileByServerRelativeUrl(path);

        var item = file.ListItemAllFields;
        var fields = item.ParentList.Fields;

        context.Load(file, f => f.ListItemAllFields);
        context.Load(fields, include => include.Include(f => f.Id, f => f.InternalName, f => f.Title));
        context.ExecuteQuery();



        foreach (string fieldName in item.FieldValues.Keys)
        {
            Field field = fields.Where(f => f.InternalName == fieldName).First();

            Console.Write(field.Title + ": ");
            Console.WriteLine(item.FieldValues[fieldName]);
        }

    }
}