【问题标题】:Performance difference between ToList() vs AsEnumerableToList() 与 AsEnumerable 之间的性能差异
【发布时间】:2020-08-23 15:36:03
【问题描述】:

最近我们开始在 Visual Studio 中使用 sonarLint 插件来提高代码质量和覆盖率。之后,我们收到了用 ASEnumerable 替换 Tolist() 的建议。

错误文本:如果您使用的是 LINQ to Entities,请放弃对“ToList”的无用调用或将其替换为“AsEnumerable”。

它给出异常的对象是使用 dapper 获取的,它的数据类型是 IEnumerable。

【问题讨论】:

  • AsEnumerable 是一个simple cast,而ToList 将在内存中创建List<T>。以前的操作只需要一个演员表,它已经是IEnumerable 并且没有延迟(必须不延迟)。所以除非你想使用List<T> 功能(例如添加/删除项目)ToList 调用是多余的。

标签: c# sonarqube sonarlint


【解决方案1】:

如果您一次只需要处理每个项目,AsEnumerable 将允许您在返回查询结果的同时处理每个项目。允许垃圾收集器在您完成之前从内存中删除对象,这可能会减少您的峰值内存使用量。

这会带来显着的性能提升吗?这取决于许多其他因素。

【讨论】:

    【解决方案2】:

    ToList() 和 AsEnumberable() 具有潜在的性能差异。您可能会发现以下链接很有用

    https://stackoverflow.com/a/3628705/13049026

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-11
      • 1970-01-01
      • 2019-09-16
      • 2018-10-28
      • 1970-01-01
      相关资源
      最近更新 更多