为什么asp.net Web API上的GET方法返回IQueryable?

Mat*_*hew 7 c# asp.net iqueryable asp.net-web-api2

在asp.net Web Api2中,当您为具有实体框架的模型创建异步Web api控制器时,默认情况下,新控制器中的第一个方法如下:

 public IQueryable<MyModel> GetMyModel()
 {
     return db.MyModel;
 }
Run Code Online (Sandbox Code Playgroud)

此方法的JSON输出只是所有MyModel条目的数组.同时,POST,PUT,GET(int id)和DELETE的所有其他方法都标记为async并返回Task<IHttpActionResult>.为什么不是同一风格的第一个GET方法,如下所示:

 public async Task<IHttpActionResult> GetMyModel()
 {
     return Ok(await db.MyModel.ToArrayAsync());
 }
Run Code Online (Sandbox Code Playgroud)

我试过这个,它产生相同的JSON输出.

Cod*_*ter 5

由于Web API无论如何都会实现结果,因此将生成所需的最少代码。

打电话给ToArrayAsync()您实际上是在做不必要的工作,无论如何稍后都会为您完成。