我正在尝试对查询进行强制转换,但它却给我一个错误500
http://source/service/odata.svc?$filter=(cast(Value,'Edm.Int32') eq 1)
列'Value'是Edm.String
请注意,我使用的是OD3的v3
答案 0 :(得分:0)
我认为您可能会收到来自服务的错误消息:
No coercion operator is defined between types 'System.String' and 'System.Nullable`1[System.Int32]'.
Linq的Expression.Convert抛出了它,它试图将字符串值转换为int值。
这是因为只支持将数字类型强制转换为数字类型。 (这在v4 spec 5.1.1.4.29演员中明确提到。
另请注意,其他强类型语言也不允许将“CAST”从字符串直接转换为int。因此,以下代码将无法编译:
string a = "3";
int b = (int) a;
更好的解决方案是在这里手动转换const:
http://source/service/odata.svc?$filter=Value eq '1'