您应该认真考虑使用 Web Api 的强大 Odata 转换功能。它允许您直接在查询字符串中构建丰富的查询,这些查询被转换为 Linq 表达式。这就是我将如何解决您的问题。
首先,确保您的图书模型具有 AuthorId 属性:
public class Book
{
public string Title{get; set;}
public int AuthorId{get; set;}
}
接下来,创建一个书籍控制器并公开返回 IQueryable 的 Get 方法:
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