Chunk 方法仅在 .NET 6 可用旧版本会编译报错它返回 IEnumerableT[] 而非 IAsyncEnumerableT[]size ≤ 0 时抛 ArgumentException且分块过程触发立即执行并产生数组分配开销。Chunk 方法在 .NET 6 才可用旧版本直接报错如果你用的是 .net 5 或更早版本调用 chunk 会得到编译错误ienumerablet does not contain a definition for chunk/t。这不是写法问题是 api 根本不存在。解决办法只有两个升级到 .NET 6 或更高推荐或者手动实现分块逻辑。别试图通过 NuGet 安装“补丁包”——微软没发布过兼容旧框架的 Chunk 扩展。.NET 6直接用 Enumerable.Chunk无需额外引用.NET 5 及以下用 GroupBy((_, i) i / size) 或手写循环但要注意索引溢出和空集合边界Unity 项目特别注意默认用的不是完整 .NET即使标称支持 .NET 6Chunk 也可能被裁剪掉得实测Chunk 返回的是 IAsyncEnumerable不它返回 IEnumerableT[]常见误解是以为 Chunk 和 Buffer如 System.Reactive一样返回流式结果其实它同步执行、立即分配内存、返回的是 IEnumerableT[] —— 每个元素是一个数组不是 IEnumerableT。这意味着调用后整个源集合会被遍历一次但不会一次性把所有块加载进内存惰性求值每个块是独立数组修改某个块里的元素不会影响原集合但块内数组可变如果源是数据库查询如 EF Core 的 IQueryableChunk 会强制触发执行变成内存操作 —— 别在大表上直接 context.Items.AsEnumerable().Chunk(100)示例var chunks list.Chunk(3); → 得到 IEnumerableint[]不是 IAsyncEnumerableint[]也不支持 await foreach除非你自己包装size 参数为 0 或负数时抛 ArgumentExceptionChunk 对参数极其严格只要 size 0立刻抛出 ArgumentException连 null 检查都不做 —— 它只检查 size。生产环境常见翻车点 唱鸭 音乐创作全流程的AI自动作曲工具集 AI 辅助作词、AI 自动作曲、编曲、混音于一体