Asp.net web api 在应用查询之后和返回数据之前,是否有方法更改odata的结果?

Asp.net web api 在应用查询之后和返回数据之前,是否有方法更改odata的结果?,asp.net-web-api,odata,Asp.net Web Api,Odata,我有一个WebAPIOData控制器,在应用查询之后和返回数据之前,我需要执行一些操作。在EnableQuery中,我无法使用扩展方法来执行此操作 事实上,我需要在数据返回到客户端之前删除一些记录。此操作无法通过URI/Query/Filter完成 更新 请参阅下面的代码。实际筛选器应用于第一个ApplyQuery的返回值。如果我在其中执行筛选器,uri筛选器将被忽略 我试图查看扩展是否存在的代码: public class EQueryAttribute : EnableQueryAt

我有一个WebAPI
OData
控制器,在应用查询之后和返回数据之前,我需要执行一些操作。在
EnableQuery
中,我无法使用扩展方法来执行此操作

事实上,我需要在数据返回到客户端之前删除一些记录。此操作无法通过URI/Query/Filter完成

更新

请参阅下面的代码。实际筛选器应用于第一个
ApplyQuery
的返回值。如果我在其中执行筛选器,uri筛选器将被忽略

我试图查看扩展是否存在的代码:

    public class EQueryAttribute : EnableQueryAttribute
{
    public override IQueryable ApplyQuery(IQueryable queryable, ODataQueryOptions queryOptions)
    {
            var retval = base.ApplyQuery(queryable, queryOptions);

        if (queryable.ElementType.Name == "ProductInfoDto")
        {
            var q = retval as IQueryable<ProductInfoDto>;
            return new List<ProductInfoDto>() { new ProductInfoDto { PasName = "123" } }.AsQueryable();
        }

        return retval;

    }

    public override object ApplyQuery(object entity, ODataQueryOptions queryOptions)
    {
        return base.ApplyQuery(entity, queryOptions);
    }

    public override Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
    {

        return base.OnActionExecutedAsync(actionExecutedContext, cancellationToken);
    }
}
公共类equalyAttribute:EnableQueryAttribute
{
公共覆盖IQueryable ApplyQuery(IQueryable queryable、ODataQueryOptions queryOptions)
{
var retval=base.ApplyQuery(可查询,查询选项);
if(queryable.ElementType.Name==“ProductInfoDto”)
{
var q=返回为可查询的值;
返回new List(){new ProductInfoDto{PasName=“123”}}}。AsQueryable();
}
返回返回;
}
公共覆盖对象ApplyQuery(对象实体、ODataQueryOptions查询选项)
{
返回base.ApplyQuery(实体,查询选项);
}
OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext,CancellationToken CancellationToken)上的公共重写任务
{
返回base.OnActionExecutedAsync(actionExecutedContext,cancellationToken);
}
}

提供一些您尝试过的代码,您可以使用查询选项。@Aria请参阅更新plzSo您想删除一些特定记录吗?如果是,您可以在返回记录之前在Quaryable func中将其删除,或将筛选器添加到
查询选项中。再次查看@Aria I更新代码提供一些您尝试过的代码,您可以使用查询选项。@Aria请参阅更新PLZ是否要删除某些特定记录?如果是,您可以在返回记录之前在Quaryable func中将其删除,或将筛选器添加到
查询选项中。再次查看@Aria I更新代码