OData is a good option on the .NET platform. There are alternatives of course, but OData should be good enough for your use-case. If you don't need all the features of OData you can also implement querying yourself by following similar principles, afer all OData is a protocol, and Microsoft has it's own implementation in .NET.
Yes you can enable OData querying globally or for a single action in a Web API controller.
Here is an excerpt from the ASP.NET site:
The EnableQuerySupport method enables query options globally for any controller action that returns an IQueryable type. If you don’t want query options enabled for the entire application, you can enable them for specific controller actions by adding the [Queryable] attribute to the action method.
Here is an example Web API controller with querying enabled:
public class ProductsController : ApiController
{
[EnableQuery]
IQueryable<Product> Get() {}
}
You could invoke client-driven paging on the controller above with the following URL:
http://localhost/Products?$top=10&$skip=20
More information here: http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options
In the example above i used the EnableQuery attribute instead of Queryable since the latter is obsolete.
You can install OData using the following NuGet package:
https://www.nuget.org/packages/Microsoft.AspNet.OData/