仅从 ASP.NET Core Web API 返回 JSON 结果中的接口成员

问题描述 投票:0回答:1

我有一个简单的 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()
更好/更有效的方法?

c# asp.net-core asp.net-core-webapi
1个回答
0
投票

转换不会删除属性,不会创建新对象,而只是更改底层引用类型。对象本身保持不变。

你可以做的是使用

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() );
}

或者,如果您要在很多地方重复使用它,您可以创建一个扩展方法,以便将它放在一个地方。

© www.soinside.com 2019 - 2024. All rights reserved.