Filter 使用ODataClient和Expand使用ODATA调用正确的URI
我有两个相互关联的表,我想在这两个表上使用过滤器执行一些查询(每个表一个) 我在c#中使用的控制器如下所示:Filter 使用ODataClient和Expand使用ODATA调用正确的URI,filter,odata,expand,Filter,Odata,Expand,我有两个相互关联的表,我想在这两个表上使用过滤器执行一些查询(每个表一个) 我在c#中使用的控制器如下所示: var list = await client.For("T_Project") .Filter("IsQuote eq false") .Expand("T_Ref_StatusProject") .Filter("Final eq false") .FindEntriesAsy
var list =
await client.For("T_Project")
.Filter("IsQuote eq false")
.Expand("T_Ref_StatusProject")
.Filter("Final eq false")
.FindEntriesAsync();
以下是我使用此代码获得的URI:
http://localhost:12494/gp/T_Project?$filter=(IsQuote eq false) and (Final eq false)&$expand=T_Ref_StatusProject
但是,我得到一个错误,说请求不正确。我想我想要的那个看起来像
http://localhost:12494/gp/T_Project?$filter=(IsQuote%20eq%20false)&$expand=T_Ref_StatusProject($filter=Final%20eq%20true)
但是,结果与我没有为扩展表放置任何过滤器的结果完全相同
所以我有两个问题。我如何使它在我的c#代码中工作,正确的URL语法是什么。我想回答第一个问题就会回答第二个问题
我的UI项目(带有示例代码的项目)安装了Simple.OData.Client(5.0.0 alpha2)(包括Microsoft.OData.code(6.15.0))
我的API已安装Microsoft.ASPNet.Odata V5.9.1
谢谢根据ODATA文档,对嵌套属性进行过滤将如下所示:
http://localhost:12494/gp/T_Project?$filter=(IsQuote eq false) and (T_Ref_StatusProject/any(d:d/Final eq false))
请参见查询选项5.1.1.10.1(如有),另请参见文档中描述该概念的“寻址派生类型”
在问题的第一部分,我无法帮助您,因为我没有使用C#客户端。但是,您可以检查Filter()
方法是否接受lambda表达式,您可以指定直接对应于扩展实体的表达式