SuperAPI AI 工具集

dotnet-linq-optimization

通用与其它

查看项目

更新于 10-16 07:23

技能介绍

用途:为 .NET 应用提供 LINQ 性能优化模式,核心是区分 IQueryable<T> 的服务端求值与 IEnumerable<T> 的客户端物化,并覆盖 EF Core 热路径编译查询、延迟执行陷阱、LINQ-to-Objects 分配模式以及 Span 零分配处理。

主要能力:识别 AsEnumerable() 或强制转换导致的求值位置切换;用 EF.CompileAsyncQuery 缓存表达式树以降低高频查询开销;检测多次枚举、循环闭包捕获、方法返回未求值查询等问题;分析 Where/Select/OrderBy/GroupBy 等操作符的分配来源;提供投影先行、键集分页、ExecuteUpdateAsync 批量操作等查询优化模式。

使用方式:在 IQueryable 上先过滤再物化,避免在谓词中调用无法翻译为 SQL 的 C# 方法;高频查询使用编译查询,但动态 Include 或条件 Where 不适用;结果会被多次消费时用 ToList() 物化;深分页改用 Where(o => o.Id > lastSeenId) 的键集分页;仅在基准测试证明分配有影响时才用手写循环或 Span 替代 LINQ。

适用场景:EF Core 数据访问层、高频查询热路径、大批量集合处理、CSV 或日志行解析等。

限制:不涉及 DbContext 生命周期与迁移、数据架构、Span/Memory 基础与微基准测试设置,这些由其他技能覆盖。编译查询参数须为简单类型,不能使用动态 Include 或改变表达式树形状的条件子句。Span 与 LINQ 不兼容。未提供具体性能数字、收费或平台信息。