gpt4 book ai didi

c# - 了解 ClientContext.Load 的参数

转载 作者:行者123 更新时间:2023-11-30 19:55:29 26 4
gpt4 key购买 nike

我有一些代码可以调用像这样开始的 SharePoint 托管元数据服务:

var clientContext = new ClientContext("http://mysharepointsite/")
{ AuthenticationMode = ClientAuthenticationMode.Default};

var taxonomySession = TaxonomySession.GetTaxonomySession(clientContext);
var termStore = taxonomySession.GetDefaultSiteCollectionTermStore();

我没问题。然而,在此之后我们有:

clientContext.Load(termStore,
store => store.Name,
store => store.Groups.Include(
group => group.Name,
group => group.TermSets.Include(
termSet => termSet.Name,
termSet => termSet.Terms.Include(
term => term.Name)
)
)
);

谁能帮我理解这里发生了什么?

  • 起初我以为这是某种 LINQ 查询,但后来我希望该类有行 using System.Linq; ,它没有。

  • 我刚刚注意到在 Visual Studio 中有一些 IntelliSense 表示调用的结构如下:void ClientruntimeContext.Load<T>(T clientObject, params System.Linq.Expressions.Expression<Func<T, object>>[] retrievals) - 这让它看起来像是在以某种方式使用 Linq

  • 我知道代码以某种方式从给定的共享点站点“加载”托管元数据服务中的术语库数据,但我不太明白该语法到底在做什么。

  • 我从 here 得到代码示例,它完全按照我的意愿行事,但如果我真正理解该语法,我会感觉舒服多了!

  • The documentation也不是特别有用,因为它只是定义了 Load() s 参数为 <T> ,可以是任何东西!

非常感谢任何建议或推荐阅读,谢谢!

最佳答案

ClientRuntimeContext.Load<T> Method

此方法的第二个参数指定应使用 lambda 表达式检索目标客户端对象(第一个参数)的哪些属性。

示例

在下面的查询中,除了collection属性之外的所有属性,例如 TermStore.Groups TermStore client object将被检索

ctx.Load(termStore);

在下一个查询中,将为 TermStore.Name client object 仅检索明确指定的属性列表( TermStore.GroupsTermStore ) :

ctx.Load(termStore, store => store.Name, store => store.Groups);

下一个问题出现了,如何指定要检索的集合客户端对象的哪些属性, Include<TSource>(IQueryable<TSource>, \[\]) method方法来拯救这里。

Include<TSource>(IQueryable<TSource>, \[\]) method

此方法用于限制从对象集合返回哪些属性(出于性能目的)

示例

下面的表达式

ctx.Load(termStore, store => store.Groups.Include( g => g.Name));

告诉构造查询以返回 TermStore client object其中包括TermStore.Groups属性,但不是 Group 的默认属性客户端对象,只有 Group.Name属性(property)。

关于c# - 了解 ClientContext.Load 的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37456065/

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