gpt4 book ai didi

c# - SharePoint 获取内容类型名称

转载 作者:太空狗 更新时间:2023-10-29 23:22:01 24 4
gpt4 key购买 nike

我正在尝试从 SharePoint 库获取所有文件夹和文件,执行单个请求。

CamlQuery query = new CamlQuery();
query.ViewXml = "<View Scope='RecursiveAll' />";
var libraryName = "Specific Documents";

ListItemCollection itemsRaw = clientContext.Web.Lists.GetByTitle(libraryName).GetItems(query);
clientContext.Load(itemsRaw);
clientContext.ExecuteQuery();

此代码运行良好,因此我在指定的库中有一个所有文件夹和文件的列表。

似乎文件详细信息是以惰性方式加载的。只有详细信息层次结构的第一级。但我不知道如何,FieldValues 集合中充满了数据。

ListItem details

我看到 ListItem ContentType.Name 没有初始化。

ContentType Name is not initialized

是否有可能以某种方式更新查询,从而在该单次调用中为 ContentType 加载数据。

或者唯一的可能性是遍历所有文件并为特定文件加载 ContentType?

我是通过以下方式做到的:

foreach(var listItem in listItemCollection)
{
context.Load(listItem, k => k.ContentType);
context.ExecuteQuery();
var contentTypeName = listItem.ContentType.Name;
}

但如果可能的话,我将在一次调用中获取此信息,而无需在集合中进行迭代并启动对 ClientContext 的多次调用。

P.S.:我是 SharePoint 编程的新手。我只是想修复一个错误。

谢谢!

最佳答案

正如您在 SharePoint 客户端对象模型 (CSOM) 中正确注意到的那样 ClientRuntimeContext.Load Method不检索客户端对象的所有属性。

ClientRuntimeContext.Load Method具有以下语法:

public void Load<T>(
T clientObject,
params Expression<Func<T, Object>>[] retrievals
)
where T : ClientObject

其中 retrievals 参数用于指定必须检索的属性。

其次,由于 SharePoint CSOM 支持 Request Batching ,你的例子可以修改为这个:

foreach (var item in items)
{
ctx.Load(item, i => i.ContentType);
}
ctx.ExecuteQuery();

Note: request is submitted to the server only once in this example

但是所提供的示例仍然需要向服务器发出两个请求:

  • 检索列表项
  • 检索列表项的内容类型

并且可以通过将对服务器的请求减少到一个来从性能角度改进

最终示例

该示例演示了如何检索列表项并明确指定要检索的属性:

 var listTitle = "Documents";
var query = new CamlQuery();
query.ViewXml = "<View Scope='RecursiveAll' />";

var items = ctx.Web.Lists.GetByTitle(listTitle).GetItems(query);
ctx.Load(items,icol => icol.Include(
i => i.ContentType,
i => i.FieldValues));
ctx.ExecuteQuery();

关于c# - SharePoint 获取内容类型名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28504032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com