多次调用 ToList() 对性能有影响吗?

akd*_*akd 1 c# linq

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

第一个 ToList() 位于数据层,在此调用转到数据库并获取数据。

    public IEnumerable<Company> GetCompanies()
    {
        return DbContext.Companies.ToList();
    }
Run Code Online (Sandbox Code Playgroud)

然后在控制器我可以看到另一个调用为 ToList()

        public ActionResult Index()
    {
        var companies = _companyService.GetCompanies().ToList();
        return View(companies);
    }
Run Code Online (Sandbox Code Playgroud)

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

更新

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

Tit*_*mir 6

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