Dynamics crm 如何在LinkEntity中使用条件和筛选器?

Dynamics crm 如何在LinkEntity中使用条件和筛选器?,dynamics-crm,crm,xrm,query-expressions,Dynamics Crm,Crm,Xrm,Query Expressions,我想创建一个QueryExpression来模拟这个SQL语句 select * from A inner join B on A.b_id=B.ID where B.Name like "% what ever %" 这就是FetchXML的外观 <?xml version="1.0" encoding="UTF-8"?> <fetch distinct="true" mapping="logical" output-format="xml-platform" versio

我想创建一个
QueryExpression
来模拟这个SQL语句

select * from A
inner join B on A.b_id=B.ID
where B.Name like "% what ever %"
这就是FetchXML的外观

<?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>

希望这是不言自明的

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

除了James的回答之外,别忘了还可以使用已有的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>");
};
RetrieveMultipleRequest fetchRequest1=新建RetrieveMultipleRequest
{
Query=newfetchexpression(
@"
...
");
};

我很少写QueryExpression,因为使用fetch执行要容易得多。

fetch很容易,但使用QueryExpression进行查询时应该更快。另外请注意,SDK提供了在FetchXml和QueryExpression之间转换的方法:
RetrieveMultipleRequest fetchRequest1 = new RetrieveMultipleRequest
{
    Query = new FetchExpression(
        @"<fetch distinct="true" mapping="logical" output-format="xml-platform" version="1.0">
            <entity name="A">
                ...
            </entity>
         </fetch>");
};