C# 理解ClientContext.Load';s参数
我有一些代码可以调用SharePoint管理的元数据服务,其启动方式如下:C# 理解ClientContext.Load';s参数,c#,linq,sharepoint,lambda,C#,Linq,Sharepoint,Lambda,我有一些代码可以调用SharePoint管理的元数据服务,其启动方式如下: var clientContext = new ClientContext("http://mysharepointsite/") { AuthenticationMode = ClientAuthenticationMode.Default}; var taxonomySession = TaxonomySession.GetTaxonomySession(clientContext); var termSt
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查询,但后来我希望该类使用System.LINQ具有行
代码>,但它没有
- 我刚刚注意到,在VisualStudio中有一些IntelliSense表示调用的结构如下:
-这使得它看起来好像在以某种方式使用Linqvoid ClientruntimeContext.Load(T clientObject,params System.Linq.Expressions.Expression[]retrievals)
- 我知道代码在某种程度上是从给定的sharepoint站点“加载”托管元数据服务中的termstore数据,但我不太明白该语法到底在做什么
- 我从中获得了代码示例,它完全符合我的要求,但如果我真的理解了语法,我会感觉舒服得多
- 也不是特别有用,因为它只是将
的参数定义为Load()
,可以是任何东西
ctx.Load(termStore);
在下一次查询中,仅检索以下对象的显式指定属性列表(TermStore.Name
,TermStore.Groups
):
下一个问题出现了,如何指定要检索的集合客户机对象的哪些属性,方法在这里起到了解救作用
此方法用于限制从对象集合返回的属性(出于性能目的)
示例
下面的表达式
ctx.Load(termStore, store => store.Groups.Include( g => g.Name));
指示构造要返回的查询,其中包括TermStore.Groups
属性,但不包括Group
客户端对象的默认属性,仅包含Group.Name
属性
ctx.Load(termStore, store => store.Groups.Include( g => g.Name));