已关闭,此问题为opinion-based。它目前不接受回答。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
26天前关闭
Improve this question
public async Task<ActionResult<IEnumerable<string>>> GetAllMemoriesNamesForCurrentUser()
{
var currentUserId = User.GetUserId();
var currentUser = await _repositoryManager.User.GetUserByIdAsync(currentUserId,trackChanges: false);
if(currentUser is null)
{
return NotFound("User is not found");
}
IEnumerable<string> memoriesNames = currentUser.Memories.Select(m => m.Title);
return Ok(memoriesNames);
}
我知道,他们两个都工作正常。但是,仍然很有趣的是,它们中的哪一个被认为是更好的实践,哪一个工作得更快。感谢回应:>
1条答案
按热度按时间sgtfey8w1#
框架设计指南建议在需要返回可由调用方修改的集合时使用类Collection,或者对于只读集合使用ReadOnlyCollection。
这比简单的
IList
更好的原因是IList
不会通知调用者它是否是只读的。如果您返回
IEnumerable<T>
,则调用者执行某些操作时可能会有点棘手。此外,您将不再给予调用方修改集合的灵活性,这可能是您想要的,也可能不是。请记住,LINQ包含一些技巧,并将根据执行的类型优化某些调用。因此,例如,如果您执行
Count
,并且底层集合是List,则它不会遍历所有元素。就个人而言,对于ORM,我可能会坚持使用
Collection<T>
作为返回值。