我有一个简单的 API,它从数据库中返回行列表,如下所示:
[HttpGet]
[Route("list/{count}")]
public async Task<ActionResult<IEnumerable<IResult>>> GetRows(int count)
{
var list = await dbc.GetList(count);
return new JsonResult( list.ToList<IResult>() );
}
数据库返回一行,其中包含属性 id、name、status 等,而接口有一个子集,如下所示:
public class Result
{
int id { get; set; }
string name { get; set; }
int status { get; set; }
}
public interface IResult
{
int id { get; set; }
string name { get; set; }
}
我有
.ToList()
仅返回 json 结果中的字段,有没有比先转换为另一个 List()
更好/更有效的方法?
转换不会删除属性,不会创建新对象,而只是更改底层引用类型。对象本身保持不变。
你可以做的是使用
Select
:
[HttpGet]
[Route("list/{count}")]
public async Task<ActionResult<IEnumerable<IResult>>> GetRows(int count)
{
var list = await dbc.GetList(count);
return new JsonResult( list.Select(e => new { e.id, e.name,}).ToList() );
}
或者,如果您要在很多地方重复使用它,您可以创建一个扩展方法,以便将它放在一个地方。