2014-09-29 53 views
0

我試圖做的查詢上投,但它扔我一個錯誤500

http://source/service/odata.svc?$filter=(cast(Value,'Edm.Int32') eq 1) 

凡列「價值」是一個Edm.String

請注意,我用的OData

回答

0

的V3我想你可能會得到錯誤消息像服務:

No coercion operator is defined between types 'System.String' and 'System.Nullable`1[System.Int32]'. 

這是由LINQ的公司的E拋出xpression.Convert,它會嘗試將字符串值轉換爲int值。

這是因爲數字類型只支持轉換爲數字類型。 (這是在v4 spec 5.1.1.4.29演員中明確提出的)。

另請注意,其他強類型語言也不允許直接從字符串中將'CAST'轉換爲int。因此,下面的代碼不會編譯:

string a = "3"; 
int b = (int) a; 

一個更好的解決方案可以在此處手動鑄造常量:

http://source/service/odata.svc?$filter=Value eq '1'