Web API and OData- Pass Multiple Parameters

For OData v4.0 endpoints, you don't have to make it a function, you can simply do...

public class ReportsController : ODataController
{
    [EnableQuery]
    [ODataRoute("Reports({id}, {year})")]
    public IQueryable<ReportModel> Get([FromODataUri] int id, [FromODataUri] int year)
    {
        ...
    }
}

Then you can call it like...

/Reports(42, 2019)

You can define a function import named GetReports that has two parameters.

(Note: the name of the function import can't be the same with entity set name)

Configure your EDM model as:

var builder = new ODataConventionModelBuilder();
builder.EntitySet<Report>("Reports");
var function = builder.Function("GetReports");
function.Parameter<int>("Id");
function.Parameter<int>("Year");
function.ReturnsCollectionFromEntitySet<Report>("Reports");
var model = builder.GetEdmModel();

And then write your method as:

[HttpGet]
[ODataRoute("GetReports(Id={Id},Year={Year})")]
public IHttpActionResult WhateverName([FromODataUri]int Id, [FromODataUri]int Year)
{
    return Ok(_reportsRepository.GetReports(Id, Year));
}

Then the request

Get ~/GetReports(Id=22,Year=2014)

will work.