For example: http://localhost:64513/api/Model?$filter=1+eq+Enum3
Response: HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcaG9uZ3llc1xhc3BuZXQtMTVkZmU3ZTA3NTlmXFNhbXBsZXNcTmV0NFxDU1xXZWJBcGlcT0RhdGFTZXJ2aWNlU2FtcGxlVlMxMVxRdWVyeWFibGVSZXByb1xhcGlcTW9kZWw=?=
X-Powered-By: ASP.NET
Date: Mon, 24 Sep 2012 06:43:40 GMT
Content-Length: 1932
{"Message":"The query specified in the URI is not valid.","ExceptionMessage":"A binary operator with incompatible types was detected. Found operand types 'Edm.Int32' and 'Edm.String' for operator kind 'Equal'.","ExceptionType":"Microsoft.Data.OData.ODataException","StackTrace":" at Microsoft.Data.OData.Query.MetadataBinder.BindBinaryOperator(BinaryOperatorQueryToken binaryOperatorToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)\r\n at Microsoft.Data.OData.Query.MetadataBinder.ProcessFilter(QueryNode query, QueryToken filter)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindTree(SyntacticTree syntax)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindQuery(SyntacticTree syntax)\r\n at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model, Int32 maxDepth)\r\n at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model)\r\n at System.Web.Http.OData.Query.FilterQueryOption.get_QueryNode() in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\FilterQueryOption.cs:line 68\r\n at System.Web.Http.OData.Query.FilterQueryOption.ApplyTo(IQueryable query, ODataQuerySettings querySettings, IAssembliesResolver assembliesResolver) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\FilterQueryOption.cs:line 123\r\n at System.Web.Http.OData.Query.ODataQueryOptions.ApplyTo(IQueryable query, ODataQuerySettings querySettings) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\ODataQueryOptions.cs:line 185\r\n at System.Web.Http.QueryableAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\QueryableAttribute.cs:line 173"}
Comments: User can use syntax like: http://localhost:64513/api/Model?$filter='1'+eq+Enum3 To compare enum with integer. The problem here is that most of the users will use integer in $filter at their first time as Kiran said and will encounter this error. However, this error is a little bit confusing to users.
Response: HTTP/1.1 400 Bad Request
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcaG9uZ3llc1xhc3BuZXQtMTVkZmU3ZTA3NTlmXFNhbXBsZXNcTmV0NFxDU1xXZWJBcGlcT0RhdGFTZXJ2aWNlU2FtcGxlVlMxMVxRdWVyeWFibGVSZXByb1xhcGlcTW9kZWw=?=
X-Powered-By: ASP.NET
Date: Mon, 24 Sep 2012 06:43:40 GMT
Content-Length: 1932
{"Message":"The query specified in the URI is not valid.","ExceptionMessage":"A binary operator with incompatible types was detected. Found operand types 'Edm.Int32' and 'Edm.String' for operator kind 'Equal'.","ExceptionType":"Microsoft.Data.OData.ODataException","StackTrace":" at Microsoft.Data.OData.Query.MetadataBinder.BindBinaryOperator(BinaryOperatorQueryToken binaryOperatorToken)\r\n at Microsoft.Data.OData.Query.MetadataBinder.Bind(QueryToken token)\r\n at Microsoft.Data.OData.Query.MetadataBinder.ProcessFilter(QueryNode query, QueryToken filter)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindTree(SyntacticTree syntax)\r\n at Microsoft.Data.OData.Query.MetadataBinder.BindQuery(SyntacticTree syntax)\r\n at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model, Int32 maxDepth)\r\n at Microsoft.Data.OData.Query.SemanticTree.ParseUri(Uri queryUri, Uri serviceBaseUri, IEdmModel model)\r\n at System.Web.Http.OData.Query.FilterQueryOption.get_QueryNode() in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\FilterQueryOption.cs:line 68\r\n at System.Web.Http.OData.Query.FilterQueryOption.ApplyTo(IQueryable query, ODataQuerySettings querySettings, IAssembliesResolver assembliesResolver) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\FilterQueryOption.cs:line 123\r\n at System.Web.Http.OData.Query.ODataQueryOptions.ApplyTo(IQueryable query, ODataQuerySettings querySettings) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\OData\\Query\\ODataQueryOptions.cs:line 185\r\n at System.Web.Http.QueryableAttribute.OnActionExecuted(HttpActionExecutedContext actionExecutedContext) in C:\\dd\\DevDiv\\Offcycle\\WPT\\WebStackRuntime\\runtime\\src\\System.Web.Http.OData\\QueryableAttribute.cs:line 173"}
Comments: User can use syntax like: http://localhost:64513/api/Model?$filter='1'+eq+Enum3 To compare enum with integer. The problem here is that most of the users will use integer in $filter at their first time as Kiran said and will encounter this error. However, this error is a little bit confusing to users.