odata - 在odata滤波中,如何用eq进行?

  显示原文与译文双语对照的内容
138 0

我想用用户交互在odata查询中设置过滤器。 当用户选择一个数据属性我已经知道它的类型。 例如,如果用户想要过滤SALE_PRICE等于某些数字,我已经知道选定的属性是 Edm.Decimal 类型的。 所以我尝试使用这个事实,并使用cast操作构建查询。 例如要获取SALE_PRICE等于 323.7的数据,请创建以下 URI:


analyticView?$select=AMOUNT_SOLD,FAMILY_NAME&$filter=SALE_PRICE+eq+(cast(323.7,'Edm.Decimal'))&$format=json

但是我收到一条错误消息说:


"No property 'cast' exists in type 

我还在 serivces.odata.org API上尝试过这一点,但它似乎不工作

http://services.odata.org/V3/Northwind/Northwind.svc/Orders$select=Freight,orderid& $filter=OrderDate+eq+ ( cast ( 1996-07-05 T00:00:00,'Edm.DateTime'))&$top=5&$format=json )?

你能检查一下是什么错误?

时间: 原作者:

69 1

你为什么需要演员? 你可以试试这个查询


analyticView?$select=AMOUNT_SOLD,FAMILY_NAME&$filter=SALE_PRICE eq 323.7M&$format=json

你可以用来表示小数,比如 3.27 0 M 。

71 2

为了解决这个问题,我创建了这个处理程序。


//How to use 
 var test = odataHanlder.odataFilter();

//how to extend with new handler 
test.addFilterHandler("Edm.Int16", function(_value){
return _value;
});

//how to prepare filter on the fly 
console.log(test.prepareFilter("Edm.DateTime","1996-07-04T00:00:00"));
//result>> datetime'1996-07-04T00:00:00' 

你可以在这里找到更详细的描述

欢迎使用反馈 !

原作者:
...