Вы должны серьезно рассмотреть возможность использования мощных возможностей перевода веб-интерфейсов Odata. Это позволяет вам создавать расширенные запросы непосредственно в строке запроса, которые переводятся в выражение Linq. Вот как бы я решил твою проблему.
Сначала убедитесь, что модель вашей книги имеет свойство AuthorId:
public class Book
{
public string Title{get; set;}
public int AuthorId{get; set;}
}
Затем создайте контроллер books и предоставьте метод Get, который возвращает IQueryable:
public class BooksController : ApiController
{
public IQueryable<Books> Get()
{
var books = new List
{
new Book{Title = "Book 1", AuthorId = 1},
new Book{Title = "Book 2", AuthorId = 2},
};
return books.AsQueryable();
}
}
Наконец, для запроса книги определенного автора ваш URI будет выглядеть так:
/books?$filter=AuthorId eq 2