2016-05-12 9 views
2

私も私ドン、これはFetchXMLは私がQueryExpressionLinkQueryConditionsFiltersでこれを行うことができますどのようにLinkEntityでどのように条件とフィルタを使用できますか?

<?xml version="1.0" encoding="UTF-8"?> 
<fetch distinct="true" mapping="logical" output-format="xml-platform" version="1.0"> 
    <entity name="A"> 
     <attribute name="ID" /> 
     <attribute name="sce_name" /> 
     <link-entity name="B" alias="ab" to="b_id" from="A"> 
     <filter type="and"> 
      <condition attribute="Name" value="% what ever %" operator="like" /> 
     </filter> 
     </link-entity> 
    </entity> 
</fetch> 

ように見えるかもしれない方法でこのSQL文

select * from A 
inner join B on A.b_id=B.ID 
where B.Name like "% what ever %" 

をシミュレートするQueryExpressionを作成したいですからにも条件がある可能性がありますから開始します。

これは、私はうまくいけば、これは自明である必要があり、これまで

QueryExpression query = new QueryExpression("A"); 
      query.ColumnSet.AllColumns = true; 
      var link = new LinkEntity() 
      { 
       JoinOperator = JoinOperator.Inner, 
       EntityAlias = "c", 
       LinkFromEntityName = "A", 
       LinkToEntityName = "B", 
       LinkFromAttributeName = "b_id", 
       LinkToAttributeName = "ID", 
      }; 

      using (var Service = new OrganizationService("con")) 
      { 
        EntityCollection entities = Service.RetrieveMultiple(query); 
      } 

答えて

4

を試してきたものです。ジェームズの答えに加えて

QueryExpression query = new QueryExpression("a") //Start on A 
{ 
    ColumnSet = new ColumnSet(), //Columns to retrieve from A 
    Criteria = new FilterExpression(LogicalOperator.And) //Conditions for A 
    { 
     Conditions = 
     { 
      new ConditionExpression() 
     } 
    }, 
    LinkEntities = 
    { 
     //Link to B 
     new LinkEntity("a", "b", "aid", "bid", JoinOperator.Inner) 
     { 
      Columns = new ColumnSet(), //Columns to retrieve from B 
      LinkCriteria = new FilterExpression() //Conditions for B 
      { 
       Conditions = 
       { 
        new ConditionExpression() 
       } 
      } 
     } 
    } 
}; 
2

、あなたはまた、クエリ、あなたが既に持っているfetch文を使用してすることができます忘れないでください:

RetrieveMultipleRequest fetchRequest1 = new RetrieveMultipleRequest 
{ 
    Query = new FetchExpression(
     @"<fetch distinct="true" mapping="logical" output-format="xml-platform" version="1.0"> 
      <entity name="A"> 
       ... 
      </entity> 
     </fetch>"); 
}; 

フェッチして実行するとはるかに簡単ですので、私はめったにQueryExpressionsを書き出す気にしません。

+0

フェッチは簡単ですが、QueryExpressionでクエリを実行すると高速になります。 – Sxntk

+0

また、SDKにFetchXmlとQueryExpressionの間で変換する方法が用意されていることにも注意してください。https://msdn.microsoft.com/en-us/library/hh547457.aspx – Aron

関連する問題