C# OData使用查询参数作为输入,但返回自定义响应

C# OData使用查询参数作为输入,但返回自定义响应,c#,odata,webapi,C#,Odata,Webapi,我正在尝试向我的OData控制器添加一个新方法,该方法的目的是基于给定的过滤器生成一个用户报告文件。该过滤器将应用于系统中的所有用户,并在过滤后生成剩余用户的报告。 该报告是一个PDF文件,因此我将其作为字节[]返回,客户端将不得不将其写入磁盘。 这是我的代码: [HttpGet] public IHttpActionResult GenerateUsersReport(ODataQueryOptions options) { var users = (I

我正在尝试向我的OData控制器添加一个新方法,该方法的目的是基于给定的过滤器生成一个用户报告文件。该过滤器将应用于系统中的所有用户,并在过滤后生成剩余用户的报告。 该报告是一个PDF文件,因此我将其作为字节[]返回,客户端将不得不将其写入磁盘。 这是我的代码:

    [HttpGet]
    public IHttpActionResult GenerateUsersReport(ODataQueryOptions options)
    {
        var users = (IQueryable<Incident>)options.ApplyTo(_LINQ.UserQuery);
        var usersIDs = users.Select(user => user.ID);
        byte[] report = // Generate query according to the user IDs
        return new FileResponse(report, "application/pdf");
    }
但是当我这么做的时候,我得到了一个错误

500无法创建EDM模型,因为控制器“用户”上的操作“GenerateUsersReport”的返回类型“System.Web.Http.IHttpActionResult”未实现IEnumerable

从这个错误中,我了解到OData希望IEnumerable在以后再次应用查询。
我怎样才能消除这个问题,只在我的代码中使用如图所示的查询,而不在返回后对其进行过滤?

我知道这是旧的,但它仍然会在搜索中弹出。因此,现在这将起作用,但在出现问题时可能不起作用:

public IHttpActionResult GenerateUsersReport(ODataQueryOptions<User> options)

如果我的假设是在名为User的实体上执行此操作。

您可以检查此选项以将数据作为文件返回。问题是使用Odata筛选器将数据作为文件返回,仅返回一个文件就可以了