关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复243或者20170111可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong.me 。

Dynamics CRM SDK中的Query Data using the Web API介绍了Web API的使用,提到了标准的过滤操作,包括括号的使用(叫做分组操作符),举得例子是 (contains(name,'sample') or contains(name,'test')) and revenue gt 5000 。在实际的使用中,这个返回的结果却不是我想要的,我的理解是括号里面的先运算,然后在运算括号外面的。为了更好的说明我以具体的例子来说。
下面这个查询:
https://demo.luoyong.me/api/data/v8.1/accounts?$select=name,revenue&$count=true&$filter= contains(name,'a') and revenue gt 100
返回了4条记录如下:
 
然后我在用另外一个查询:
https://demo.luoyong.me/api/data/v8.1/accounts?$select=name,revenue&$count=true&$filter= contains(name,'阿') and revenue gt 100
返回结果有1条记录,如下:

如果我用or加上括号把条件组合起来呢?查询如下:

https://demo.luoyong.me/api/data/v8.1/accounts?$select=name,revenue&$count=true&$filter= (contains(name,'a') or contains(name,'阿')) and revenue gt 100
我的想法是会返回5条记录,实际结果让我大跌眼镜,返回11条记录,很多不符合条件的记录也出来了,如下:
 
这是个产品BUG?还是我理解错误了?我怎么样才能GET争取的使用or 和 and的正确姿势呢?
当然我知道使用fetchXml查询的结果是正确的,构造如下:
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
<entity name="account">
<attribute name="name" />
<attribute name="primarycontactid" />
<attribute name="telephone1" />
<attribute name="accountid" />
<order attribute="name" descending="false" />
<filter type="and">
<filter type="or">
<condition attribute="name" operator="like" value="%a%" />
<condition attribute="name" operator="like" value="%阿%" />
</filter>
<condition attribute="revenue" operator="gt" value="100" />
</filter>
</entity>
</fetch>
,使用Web API执行fetchXml执行的结果也是正确的。问题是我想用普通的Web API,谁知道答案?
罗勇2017年5月10日补充,将CRM从Dynamics CRM V8.1升级到Dynamics 365以后就没问题了,这个BUG修复了,虽然我在其对应的知识库文章中没有看到提到修复这个问题的内容。
 

Dynamics CRM Web API中的and和or组合的正确方式!的更多相关文章

  1. Dynamics CRM2016 Web Api之分页查询

    在dynamics crm web api还没出现前,我们是通过fetchxml来实现的,当然这种方式依旧可行,那既然web api来了我们就拥抱新的方式. web api中我们通过指定查询的条数来实 ...

  2. Dynamics 365 Web Api之基于single-valued navigation property的filter查询

    本篇要讲的是dynamics 新版本中web api的一个改进功能,虽然改进的很有限,但至少是改进了. 举个例子,我们现在知道联系人的名字vic,我们想找出客户记录中主要联系人名字为vic的所有客户, ...

  3. Dynamics CRM2016 Web Api之根据时间查询数据

    我的博文里已经有多次提到CRM中的时间处理问题了,本篇继续探讨在web api的场景下时间字段如何处理,本篇只涉及查询,针对2016中新增的时间行为"用户当地时间"和"无 ...

  4. Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

    9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...

  5. ASP.NET Web API中的Controller

    虽然通过Visual Studio向导在ASP.NET Web API项目中创建的 Controller类型默认派生与抽象类型ApiController,但是ASP.NET Web API框架本身只要 ...

  6. Web APi 2.0优点和特点?在Web APi中如何启动Session状态?

    前言 曾几何时,微软基于Web服务技术给出最流行的基于XML且以扩展名为.asmx结尾的Web Service,此服务在.NET Framework中风靡一时同时也被.NET业界同仁所青睐,几年后在此 ...

  7. 在ASP.NET Web API中使用OData

    http://www.alixixi.com/program/a/2015063094986.shtml 一.什么是ODataOData是一个开放的数据协议(Open Data Protocol)在A ...

  8. Web Api中的get传值和post传值

    GET 方式 get方式传参 我们一般用于获取数据做条件筛选,也就是 “查” 1.无参 var look = function () { $.ajax({ type: "GET", ...

  9. WEB API 中HTTP的get、post、put,delete 请求方式

    一.WEB API 中HTTP 请求方式的四个主要方法 (GET, PUT, POST, DELETE), 按照下列方式映射为 CURD 操作: 1.POST 用于新建资源,服务端在指定的URI 上创 ...

随机推荐

  1. 依赖注入[5]: 创建一个简易版的DI框架[下篇]

    为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在<依赖注入[4]: 创建一个简易版的DI框架[上篇]> ...

  2. [Swift]LeetCode395. 至少有K个重复字符的最长子串 | Longest Substring with At Least K Repeating Characters

    Find the length of the longest substring T of a given string (consists of lowercase letters only) su ...

  3. Linux 实现服务器之间时间同步

    在主服务器上安装NTP时间同步服务器 yum -y install ntp vim /etc/ntp.conf  手动添加两行 server 127.127.1.0 fudge 127.127.1.0 ...

  4. IDEA激活码(2019)

    如您激活出现问题,请点击这里加入:软件激活问题解决群 前言 IDEA已然成为我最热爱的一款编辑器,作为一个从Eclipse阵营转过来的coder,确实能感受到IDEA的强大,而我电脑桌面的Eclips ...

  5. Spark中SQL列和并为一行

    在使用数据库的时候,需要将查询出来的一列按照逗号合并成一行. 原表名字为 TABLE ,表中的部分原始数据为: +---------+------------------------+ | BASIC ...

  6. BBS论坛(十四)

    14.1注册完成跳到上一个页面 (1)front/form.py # front/forms.py __author__ = 'derek' from ..forms import BaseForm ...

  7. InstallShield Limited Edition使用说明

    从Visual Studio 2012开始,微软就把自家原来的安装与部署工具彻底废掉了,转而让大家去安装使用第三方的打包工具“InstallShield Limited Edition for Vis ...

  8. Python爬虫入门教程 29-100 手机APP数据抓取 pyspider

    1. 手机APP数据----写在前面 继续练习pyspider的使用,最近搜索了一些这个框架的一些使用技巧,发现文档竟然挺难理解的,不过使用起来暂时没有障碍,估摸着,要在写个5篇左右关于这个框架的教程 ...

  9. 一条命令解决mac版本python IDLE无法输入中文问题

    安装完Python通常自动就有了一个简易的集成环境IDLE,但在mac上,无法在IDLE中使用中文. 通常故障有两种情况: 在IDLE中,中文输入法根本无法工作,不会弹出输入框,所有的输入都被当做英文 ...

  10. 规避 React 组件中的 bind(this)

    React 组件中处理 onClick 类似事件绑定的时候,是需要显式给处理器绑定上下文(context)的,这一度使代码变得冗余和难看. 请看如下的示例: class App extends Com ...