.NET 控制器 API 列表结果转换为 IEnumerable

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

我有一个 API 控制器,其方法返回 IEnumerable。方法 GetProjects 返回

List<(string, object)>
:

[HttpGet]
[Route("getProjects")]
public async Task<IEnumerable<(string, object)>> GetProjects(string departmentName)
{
    var result = await dataService.GetProjects(departmentName);
    return result.AsEnumerable();
}

在从 API 返回之前,结果应该转换为

IEnumerable
还是可以作为
Task<List<(string, object)>>
返回? .NET 指南的建议是应该从 API 返回 List: dotnet 标准设计指南 集合指南

在上述情况下将 List 转换为 IEnumerable 有什么好处?这是附加操作。 IEnumerable 和 List 的 Angular 服务结果看起来相同。它看起来像 json 中的数组。

c# .net list asp.net-web-api ienumerable
1个回答
0
投票

如果对 dataService.GetProjects 的调用已返回 List,则调用 AsEnumerable() 返回 IEnumerable 没有任何好处。

返回 IEnumerable 在其他情况下可能有好处:它隐藏了具体实现(例如 List),这允许您将来更改底层集合类型,而不会影响方法签名(IEnumerable 可以表示广泛的集合,提供更大的灵活性)

这里你可以简化为

[HttpGet]
[Route("getProjects")]
public async Task<List<(string, object)>> GetProjects(string departmentName)
{
    var result = await dataService.GetProjects(departmentName);
    return result;
}
© www.soinside.com 2019 - 2024. All rights reserved.