2016-09-30 24 views
0

我一直堅持這一點。以下是我正在嘗試執行的操作範圍:QueryExpression Phonecall聯繫

檢索電話記錄,同時在「到」字段中引入聯繫信息。

經過大量研究,我已經將代碼歸結爲以下內容。我不太確定,如果我正在做鏈接的實體 - 但不能確定如何做一個嵌套的連接,因爲我需要以某種方式進入activitypointer - > activityparty - > contact ...我只是不知道在哪裏我「米去錯了。任何幫助,將不勝感激。

using Microsoft.Crm.Sdk.Messages.Samples; 
using Microsoft.Xrm.Sdk.Query.Samples; 

QueryExpression qExpression = new QueryExpression("phonecall") 
{ 
    ColumnSet = cs, 
    LinkEntities = 
    { 

     new LinkEntity() 
     { 
      EntityAlias = "ap", 
      LinkFromEntityName= "phonecall", 
      LinkFromAttributeName = "activityid", 
      LinkToEntityName = "activitypointer", 
      LinkToAttributeName = "activityid", 
      JoinOperator = JoinOperator.Inner 
     }, 
     new LinkEntity() 
     { 
      EntityAlias = "app", 
      LinkFromEntityName= "activitypointer", 
      LinkFromAttributeName = "activityid", 
      LinkToEntityName = "activityparty", 
      LinkToAttributeName = "activityid", 
      JoinOperator = JoinOperator.Inner, 
      LinkCriteria = new FilterExpression 
      { 
       Conditions = 
       { 
        new ConditionExpression("ParticipationTypeMask", ConditionOperator.Equal, 2),       
       } 
      } 
     }, 
     new LinkEntity() 
     { 
      EntityAlias = "con", 
      Columns = new ColumnSet("fullname","contactid"), 
      JoinOperator = JoinOperator.Inner, 
      LinkFromEntityName = "activityparty", 
      LinkFromAttributeName = "partyid", 
      LinkToEntityName = "contact", 
      LinkToAttributeName = "contactid" 
     } 
    } 
}; 

回答

0

看起來像我回答我自己的問題,給予一定的啓發。我只好窩鏈接中的鏈接。

這就是現在的工作

QueryExpression qExpression = new QueryExpression("phonecall") 
     { 
      ColumnSet = cs, 
      LinkEntities = 
      {     
       new LinkEntity() 
       { 
        EntityAlias = "app", 
        LinkFromEntityName= "phonecall", 
        LinkFromAttributeName = "activityid", 
        LinkToEntityName = "activityparty", 
        LinkToAttributeName = "activityid", 
        JoinOperator = JoinOperator.Inner, 
        LinkCriteria = new FilterExpression 
        { 
         Conditions = 
         { 
          new ConditionExpression("participationtypemask", ConditionOperator.Equal, 2),       
         } 
        }, 
        LinkEntities = 
        {        
         new LinkEntity() 
         { 
          EntityAlias = "con", 
          Columns = new ColumnSet("fullname","contactid"), 
          JoinOperator = JoinOperator.Inner, 
          LinkFromEntityName = "activityparty", 
          LinkFromAttributeName = "partyid", 
          LinkToEntityName = "contact", 
          LinkToAttributeName = "contactid" 
         } 
        } 
       }, 
      } 
     }; 
0

使用DLaB.Xrm,你可以重新寫這是這樣的:

var qe = QueryExpressionFactory.Create(cs, "phonecall"); 
var activityParty = qe.AddLink("activityparty", "activityid"); 
activityParty.WhereEqual("participationtypemask", 2); 
activityParty.AddLink("contact", "partyid", "contactid") 
      .AddColumns("fullname","contactid"); 

有很少的代碼來看待傾向於更容易Grok恕我直言。

這是我會怎麼看我的5號線教行中列出:

  1. 我正在做一個查詢對電話實體
  2. 加入到黨的活動的活動標識(相同的密鑰兩個,不需要重複)
  3. 凡activityParty的ParticipationTypeMask == 2
  4. ,並從對ActivityParty.PartyId == Contact.ContactId
  5. 聯繫人包括姓名和我加盟d的聯繫人。