Linq 按名称而不是id搜索
我正在学习Asp.net web api 2.0,当前的CRUD方法只是按id搜索,所以我尝试按书名搜索,但没有成功 我添加到Linq 按名称而不是id搜索,linq,asp.net-web-api2,Linq,Asp.net Web Api2,我正在学习Asp.net web api 2.0,当前的CRUD方法只是按id搜索,所以我尝试按书名搜索,但没有成功 我添加到WebApiConfig.cs的内容: config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{name}", defaults: new { name = RouteParameter.Optional } }; 我遇到的问题是: //
WebApiConfig.cs
的内容:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{name}",
defaults: new { name = RouteParameter.Optional }
};
我遇到的问题是:
// GET: api/Books/Name
[ResponseType(typeof(Book))]
public IHttpActionResult GetBook(string name)
{
Book book = from a in db.Books where a.Title == name select a;
if (book == null)
{
return NotFound();
}
else
{
return Ok(book);
}
}
然而,它可以让我构建它,在我试图运行LINQ查询的那一行,我得到一个错误:无法将类型“System.LINQ.IQueryable”隐式转换为“BookService.Models.Book”。
我尝试将查询改为
Book Book=db.Books.Where(a=>a.Title==name.AsQueryable()代码>但我仍然得到相同的错误。它返回的结果集为。改变
到
然后需要对结果集进行迭代
或者,如果只需要第一个结果集,则可以使用
它返回的结果集为。改变
到
然后需要对结果集进行迭代
或者,如果只需要第一个结果集,则可以使用
Book Book=db.Books.FirstOrDefault(a=>a.Title==name)代码>Book Book=db.Books.FirstOrDefault(a=>a.Title==name)代码>现在看来,我无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.IList”
,但现在当我导航到它并键入一个标题,如/api/books/Pride
时,它只会显示一个空白页。你看到我的代码还有其他错误吗?啊,完全是我的错,是在寻找傲慢与偏见,所以我不得不把(a=>a.Title.Contains(name))代码>现在看来,我无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.IList”
,但现在当我导航到它并键入一个标题,如/api/books/Pride
时,它只会显示一个空白页。你看到我的代码还有其他错误吗?啊,完全是我的错,是在寻找傲慢与偏见,所以我不得不把(a=>a.Title.Contains(name))代码>
Book book = from a in db.Books where a.Title == name select a;
var books = from a in db.Books where a.Title == name select a;
Book book = db.Books.FirstOrDefault(a => a.Title == name);