C# 理解ClientContext.Load';s参数

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

我有一些代码可以调用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查询,但后来我希望该类使用System.LINQ具有行
    ,但它没有

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

  • 我知道代码在某种程度上是从给定的sharepoint站点“加载”托管元数据服务中的termstore数据,但我不太明白该语法到底在做什么

  • 我从中获得了代码示例,它完全符合我的要求,但如果我真的理解了语法,我会感觉舒服得多

  • 也不是特别有用,因为它只是将
    Load()
    的参数定义为
    ,可以是任何东西

任何建议或推荐阅读都将不胜感激,谢谢

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

示例

在下面的查询中,将检索除集合属性(如of)之外的所有属性

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));