Это звучит почти так же, как это делает AutoQuery ServiceStack, где он может реализовать службу запросов для вашей таблицы RDBMS из простого определения DTO запроса, например:
[Route("/movies")]
public class FindMovies : QueryDb<Movie>
{
public string[] Ratings { get; set; }
}
Тогда вы сможете позвонить в свою Службу либо с помощью Типизированного клиента обслуживания:
var movies = client.Get(new FindMovies { Ratings = new[]{"G","PG-13"} })
, либо через HTTP-запрос:
/movies?ratings=G,PG-13