/ dotnet

OData URL Conventions

本文主要介绍了调用 OData 接口时的一些笔记。更多详细内容请参考官方文档。

首先,官方文档中的方法并不是完全都可用的,灰底的示例都是 Non-normative examples ,就是非规范标准的意思……有些方法可能不行,要试过以后才知道……

?$apply=groupby((LIMSCODE),aggregate(VALUE with sum as sum,$count as count))
&$filter=((LIMSCODE+eq+'Z6ZH20186019S1194210000099')or(LIMSCODE eq '30650108S4520210000877’))
&$count=true
?$apply=groupby((status),aggregate(id with countdistinct as total))

相当于 groupby

?$apply=filter((CARD_DAY+lt+2018-01-24T23:59:59Z)+and+(CARD_DAY+gt+2018-01-23T00:00:00Z))/groupby((INOUT_FLAG),aggregate(RECORD_ID with countdistinct as total))

神奇的写法
contains 实现 like ,如果可能的话请在后面的传入字段加入前后逗号:

?$expand=Employee($select=ID_CARD)
&$select=EMP_NO,EMP_NAME,CARD_DAY,INOUT_FLAG
&$filter=(CARD_DAY+gt+2018-05-09T00:00:00Z)and(CARD_DAY+lt+2018-05-10T00:00:00Z)
and((Employee/ACTYPE_ID+ne+21)and((Employee/ACTYPE_ID+ne+22)))
and(contains('13,09,08,07,06,05,04,03,02,01',REG_NO))
&$count=true

expendselect 在括号中共用的时候用分号相隔:

?$select=FULLNAME&$expand=Employee($select=FULLNAME;$expand=Dept($select=CODE))

一般用于多级实体中间层的字段筛选。

参考文档

OData Version 4.01. Part 2: URL Conventions
安全指南用于 ASP.NET Web API 2 OData