c# - 多次调用 ToList() 是否会对性能产生影响?

标签 c# linq

<分区>

我开始从事一个项目,我注意到 ToList() 被多次调用,我认为它并不是真正必要和多余的。

第一个 ToList() 在数据层调用到数据库并获取数据。

    public IEnumerable<Company> GetCompanies()
    {
        return DbContext.Companies.ToList();
    }

然后在 Controller 上我可以看到另一个调用 ToList()

        public ActionResult Index()
    {
        var companies = _companyService.GetCompanies().ToList();
        return View(companies);
    }

我认为在 Controller 中调用 ToList() 是多余的。但我只是想知道它是否对性能有任何影响,或者语言本身会自动识别结果实际上已经列出并忽略第二次调用?

Update

另一个问题询问调用 ToList() 是否有影响。但是,我想知道是否会对同一个对象列表多次调用 ToList() 产生影响。正如有人提到的那样,应该“希望忽略”。

最佳答案

是的,这会影响性能。即使标的IEnumerable<T>已经是 List<T>调用 ToList将导致创建新列表(所以 list != list.ToList() )。根据原始列表的大小,这可能会对性能产生严重影响

关于c# - 多次调用 ToList() 是否会对性能产生影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46886860/

相关文章:

c# - Request.UrlReferrer 对于 HTTPS 为 NULL

linq - 使用 Linq 从列表字典创建映射

c# - 如何将 XNode 转换为自定义类型?

linq - linq 结果中的 foreach 不起作用

c# - 在启动时验证 WCF 服务

c# - Discord.Net 1.0 如何使用ModifyAsync/如何修改消息内容

c# - 模拟像计算器这样的类的目的是什么?

c# - 有没有办法否定谓词?

c# - 尝试从对象数组中获取自定义对象类型数组

c# - 在 Azure Active Directory 身份验证中为什么使用授权代码流