Dynamics CRM Web API中的and和or组合的正确方式!

时间:2022-12-19 12:29:45

关注本人微信和易信公众号: 微软动态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条记录如下:
Dynamics CRM Web API中的and和or组合的正确方式!
 
然后我在用另外一个查询:
https://demo.luoyong.me/api/data/v8.1/accounts?$select=name,revenue&$count=true&$filter= contains(name,'阿') and revenue gt 100
返回结果有1条记录,如下:
Dynamics CRM Web API中的and和or组合的正确方式!

如果我用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条记录,很多不符合条件的记录也出来了,如下:
 
Dynamics CRM Web API中的and和or组合的正确方式!
这是个产品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)译-&gt&semi;找出Web API中发生了什么变化

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

  5. ASP&period;NET Web API中的Controller

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

  6. Web APi 2&period;0优点和特点?在Web APi中如何启动Session状态?

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

  7. 在ASP&period;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&comma;delete 请求方式

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

随机推荐

  1. 如何实现VoIP中大并发应用

    后台服务器实现高并发方式: 说明: 黄色皆为运营商或第三方对接系统的VoIP设备等. 前置服务器A与B为热备容灾模式,当A异常,立即跳转到B. 应用服务器做实时容灾处理. 数据库做实时容灾处理. 媒体 ...

  2. Molile App&lpar;HTTP&sol;HTML&rpar;—Record and Analyze Traffic

  3. JSBinding &plus; SharpKit &sol; 使用 Firefox 调试 JS

    已经准备好,google打不开,等打开了再贴图上来

  4. 51nod 1120 机器人走方格 V3 卡特兰数 lucas定理

    N * N的方格,从左上到右下画一条线.一个机器人从左上走到右下,只能向右或向下走.并要求只能在这条线的上面或下面走,不能穿越这条线,有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 100 ...

  5. Java中的DeskTop类

        在Jdk1.6以后新增加了一个类--DeskTop,在JDK中它的解释是这样的: The Desktop class allows a Java application to launch a ...

  6. python学习笔记6(字典)

    映射:键值对的关系,键(key)映射值(value) 字典是Python唯一的映射类型 >>> phonebook = {'} >>> phonebook {'} ...

  7. 关于master&period;&period;xp&lowbar;cmdshell’的几个错误&lowbar;解决办法&lpar;转&rpar;

    错误一:Error Message:未能找到存储过程 'master..xp_cmdshell'. 第一步先删除:drop procedure sp_addextendedprocdrop proce ...

  8. Python知识点整理,基础2 - 列表操作

  9. linux忘记root密码

    在选择系统界面选中要修改的系统(我的就是默认的第一个),按e建进入修改,在修改界面一直下到文件末尾,在末尾前一行左右,找到UTF-8那一行,在这一行敲一个空格,然后打init=/bin/sh 修改完成 ...

  10. sql多行合并成一行用逗号隔开,多表联合查询中子查询取名可重复

    简单版的 SELECT a.CreateBy,Name =stuff((select ','+Name FROM SG_Client WHERE CreateBy = a.CreateBy for x ...