• Dynamics 365组织服务使用Query Expression查询数据时候请谨慎使用ConditionOperator.Contains


    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面的微软最有价值专家(Microsoft MVP),欢迎关注我的微信公众号 MSFTDynamics365erLuoYong ,回复418或者20200720可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!

    看到这个操作符Contains,很多人都会理解为包含的意思。在使用组织服务查询数据时候,有的人就会使用这个操作符,ConditionOperator.Contains。但是一执行查询,就会产生Generic SQL Error的异常,怎么回事?

    对这个操作符的解释请参考官方文档: ConditionOperator EnumType 。解释是:For an attribute enabled for full-text indexing: the string contains another string. 

    可以知道,这个操作符号是用于启用了全文索引的字段搜索。如果被搜索的字段没有启用全文索引,就会报Generic SQL Error的异常。

    如果真的要对普通字段执行包含某些字符的搜索怎么办?可以通过高级查找功能的包含(Contains)操作符来查看究竟用的是啥。

    可以知道,用的是类似如下的条件,可以看到,用的操作符是 like ,而不是Contains 。官方文档对 like操作符的解释是 The character string is matched to the specified pattern. 

    <condition attribute="ly_name" operator="like" value="%搜索值%" />

    如果一定要用Query Expression来查询数据的话,也可以使用包含,这时候用 like就可以,类似如下的查询条件即可。

    queryExpression.Criteria.AddCondition("ly_name", ConditionOperator.Like, "%搜索值%");

    Web API也有contains操作符号,具体请参考 Query Data using the Web API ,这个就是大家理解的包含的意思,示例如下:

    https://luoyongdemo.crm5.dynamics.com/api/data/v9.1/ly_order?$filter=contains(ly_name,'2020')

    Web API除了支持contains之外,还支持endswith 和 startswith ,用法和contains类似,我就不举例子了。

  • 相关阅读:
    CSS中float与A标签的疑问
    常用的Css命名方式
    div css 盒子模型
    HTML初级教程 表单form
    Redis学习记录(二)
    Redis学习记录(一)
    Java源码——HashMap的源码分析及原理学习记录
    java编程基础——从上往下打印二叉树
    java编程基础——栈压入和弹出序列
    java基础编程——获取栈中的最小元素
  • 原文地址:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_Organization_Service_Query_Expression_Caution_With_Contains_Operator.html
Copyright © 2020-2023  润新知