web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

No record found.

Community site session details

Community site session details

Session Id :
Microsoft Dynamics CRM (Archived)

FilterExpression with OR & AND - how hoe to organize?

(0) ShareShare
ReportReport
Posted on by

Hi to All

I need to implement this FetchXML in c# (for plugin)

fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="invoice">
    <attribute name="name" />
    <attribute name="customerid" />
    <attribute name="statuscode" />
    <attribute name="gs1_sumincludingvat" />
    <attribute name="invoiceid" />
    <attribute name="gs1_reminderdate" />
    <attribute name="gs1_newmaturitydate" />
    <attribute name="gs1_maturity" />
    <attribute name="gs1_ocr" />
    <attribute name="invoicenumber" />
    <attribute name="gs1_id" />
    <order attribute="name" descending="false" />
    <filter type="and">
      <filter type="or">
        <filter type="and">
          <condition attribute="gs1_maturity" operator="on-or-before" value="2015-02-20" />
          <condition attribute="gs1_newmaturitydate" operator="null" />
        </filter>
        <filter type="and">
          <condition attribute="gs1_newmaturitydate" operator="not-null" />
          <condition attribute="gs1_newmaturitydate" operator="on-or-before" value="2015-02-20" />
        </filter>
      </filter>
      <condition attribute="statuscode" operator="eq" value="1" />
    </filter>
  </entity>
</fetch>

I wrote this:

ConditionExpression condition1 = new ConditionExpression();
                condition1.AttributeName = "gs1_maturity";
                condition1.Operator = ConditionOperator.LessThan;
                condition1.Values.Add(DateTime.Now.AddDays(-daysCount));
                ConditionExpression condition11 = new ConditionExpression();
                condition11.AttributeName = "gs1_newmaturitydate";
                condition11.Operator = ConditionOperator.Null;

                FilterExpression filter = new FilterExpression();
                filter.FilterOperator = LogicalOperator.And;
                filter.Conditions.Add(condition1);
                filter.Conditions.Add(condition11);

                ConditionExpression condition2 = new ConditionExpression();
                condition2.AttributeName = "gs1_newmaturitydate";
                condition2.Operator = ConditionOperator.LessThan;
                condition2.Values.Add(DateTime.Now.AddDays(-daysCount));
                ConditionExpression condition22 = new ConditionExpression();
                condition22.AttributeName = "gs1_newmaturitydate";
                condition22.Operator = ConditionOperator.NotNull;
      
                FilterExpression filter1 = new FilterExpression();
                filter1.FilterOperator = LogicalOperator.And;
                filter1.Conditions.Add(condition2);
                filter1.Conditions.Add(condition22);

                ConditionExpression condition4 = new ConditionExpression();
                condition4.AttributeName = "statuscode";
                condition4.Operator = ConditionOperator.Equal;
                condition4.Values.Add((int)InvoiceStatusCodeEnum.Active); //1 - Active in StatusReason for Invoice
                FilterExpression filter2 = new FilterExpression();
                filter2.Conditions.Add(condition4);

                ConditionExpression condition3 = new ConditionExpression();
                condition3.AttributeName = "gs1_reminderdate";
                condition3.Operator = ConditionOperator.Null;
                FilterExpression filter3 = new FilterExpression();
                filter3.Conditions.Add(condition3);

                QueryExpression query = new QueryExpression("invoice");
                query.AddOrder("invoicenumber", OrderType.Ascending);
                query.ColumnSet.AllColumns = true;
                //query.Criteria.AddFilter(filter);
                query.Criteria.AddFilter(filter1);
                query.Criteria.AddFilter(filter2);
                query.Criteria.AddFilter(filter3);


It doesn't work correct

How I must add filter to QueryExpression, than realize condition 

((.... and....) or (....and...) and () )

*This post is locked for comments

I have the same question (0)
  • Verified answer
    Aileen Gusni Profile Picture
    44,524 on at

    Hi Nataly,

    If your purpose is to RetrieveMultiple record from the query, you can use fetchexpression instead of query using query expression.

    Reference:

    msdn.microsoft.com/.../gg328117.aspx

    Or convert the fetch xml to query:

    msdn.microsoft.com/.../hh547457.aspx

    Hope this helps.

    Thank you.

  • Community Member Profile Picture
    on at

    Thanks! It's works correctly.

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Responsible AI policies

As AI tools become more common, we’re introducing a Responsible AI Use…

Neeraj Kumar – Community Spotlight

We are honored to recognize Neeraj Kumar as our Community Spotlight honoree for…

Leaderboard > 🔒一 Microsoft Dynamics CRM (Archived)

#1
SA-08121319-0 Profile Picture

SA-08121319-0 4

#1
Calum MacFarlane Profile Picture

Calum MacFarlane 4

#3
Alex Fun Wei Jie Profile Picture

Alex Fun Wei Jie 2

Last 30 days Overall leaderboard

Featured topics

Product updates

Dynamics 365 release plans