通过 Web API 查询 Dynamics 365 时,有多个运算符可供选择以过滤查询的数据。其中一个运算符是 contains
,它实际上出现了两次。
一个是 OData contains
函数(您可以在标题“标准查询函数”下找到它):
https://msdn.microsoft.com/en-us/library/gg334767.aspx#Filter%20results
例子:
$filter=contains(name,'(sample)')
另一个是 Dynamics 365 Web API 本身的实现:
https://msdn.microsoft.com/en-us/library/mt608053.aspx
我试过这个,但只得到一个通用 SQL 错误:
$filter=Microsoft.Dynamics.CRM.Contains(PropertyName='name',PropertyValue='(sample)')
有什么区别?也许有人甚至可以告诉我如何正确调用 contains
的 Web API 版本?
最佳答案
Latest documentation确认 $filter=contains(name,'(sample)')
是唯一适用于 web api 的语法。正如 Jatin 所说,OData 过滤器在后台转换为查询表达式,一些文章(this 和 this)传达了可能的解决方案是直接在 C# 查询表达式中使用 Like
运算符。
我们没有赞
operator equivalent functions在 web api 中。
我的尝试和观察:
Microsoft.Dynamics.CRM.Contains
- 一般 SQL 错误。
$filter=like(name,'%test%')
- 发现一个名为“like”的未知函数。这也可能是函数导入或导航属性上的键查找,这是不允许的。
$filter=contains(name, 'test')
- 工作
关于dynamics-crm - OData "contains"与 Dynamics 365 Web API "contains",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49935024/