, , , , ODataUri . , OData.
OData v4 $expand, filterOption - , . filterOption .
, (root ) , $filter, ODataUri.
OData Url:
/RootEntity?$expand=OtherEntity($expand=SomeOtherEntity)
URL- OData , :
/RootEntity?$filter=OtherEntity/SomeOtherEntity/Id eq 3&$expand=OtherEntity($expand=SomeOtherEntity)
:
. :
var parser = new ODataUriParser(model, new Uri(serviceRootPath), requestUri);
var odataUri = parser.ParseUri();
- , ODataUri ref ( , )
.
AddCustomFilters(ref ODataUri odataUri);
AddCustomFilters AddCustomFiltersToExpandedEntity, , .
foreach (var item in odatauri.SelectAndExpand.SelectedItems)
{
AddCustomFiltersToExpandedEntity(ref ODataUri odataUri, ExpandedNavigationSelectItem expandedNavigationSelectItem, string parentNavigationNameProperty)
}
AddCustomFiltersToExpandedEntity , .
. $ ODataUri , .
odataUri.Filter = new FilterClause(newFilterExpression, newFilterRange);
. BinaryOperatorKind.And, , ODataUri
var combinedFilterExpression = new BinaryOperatorNode(BinaryOperatorKind.And, odataUri.Filter.Expression, newFilterExpression);
odataUri.Filter = new FilterClause(combinedFilterExpression, newFilterRange);
- ODataUriBuilder Url Uri
. :
var updatedODataUri = new Microsoft.OData.Core.UriBuilder.ODataUriBuilder(ODataUrlConventions.Default, odataUri).BuildUri();
- Uri Uri.
OData OData Url, , .
ActionContext.Request.RequestUri = updatedODataUri;
, , 100% , OData Url.
, .