用途:为 .NET 应用提供 LINQ 性能优化模式,核心是区分 IQueryable<T> 的服务端求值与 IEnumerable<T> 的客户端物化,并覆盖 EF Core 热路径编译查询、延迟执行陷阱、LINQ-to-Objects 分配模式,以及零分配的 Span 替代方案。
主要能力:说明 ToList/ToArray/foreach/AsEnumerable/Count 等操作的求值时机;指出 AsEnumerable 提前切换客户端求值、谓词中调用 C# 方法、投影过多列等常见错误;给出 EF.CompileAsyncQuery 编译查询写法及适用与限制;讲解多次枚举、循环闭包捕获、方法返回未求值查询等延迟执行问题;列出 Where/Select/OrderBy/GroupBy 等分配来源,并给出 Array.Find、预分配集合、static lambda 等折中方案;介绍 ReadOnlySpan 的 Contains、IndexOf、Split、Trim 等零分配处理;还包含投影前置、keyset 分页、ExecuteUpdateAsync 批量操作等查询优化模式。
使用方式:作为技能文档参考,按主题查阅对应模式与代码片段;示例命令与代码保持原样,如 EF.CompileAsyncQuery、ExecuteUpdateAsync、ReadOnlySpan<char> csv.Split(',')。
适用场景:高频数据库查询、热路径集合处理、CSV/日志解析、字节缓冲处理等性能敏感场景。
限制:不涉及 EF Core DbContext 生命周期、迁移、拦截器与连接弹性;不涉及仓储模式、读写分离、N+1 治理等数据架构;不涉及 Span/Memory 基础与 ArrayPool;不涉及微基准测试搭建。编译查询不支持动态 Include 或改变表达式树形状的条件 Where,参数须为简单类型。未提供具体性能数字、收费与平台信息。