用途:Sep 用于 .NET 中高性能、低分配地读写分隔值数据(如 CSV/TSV),适合对性能和内存分配敏感、需要显式控制分隔符推断、转义、裁剪和表头行为的场景,例如 ML、ETL、分析中的大文件或长期运行管道,以及需要 AOT/裁剪友好的 CSV/TSV 处理。
主要能力:提供 Sep.Reader 与 Sep.New(...).Reader 构建读取器,支持从文件、文本或流读取;可通过 SepReaderOptions 配置 HasHeader、Unescape、Trim 等;按行迭代,列以 ReadOnlySpan<char> 访问,可用 Parse<T> 转基本类型;写入使用 reader.Spec.Writer() 或 Sep.Writer(...) 配合 SepWriterOptions(WriteHeader、Escape、DisableColCountCheck);支持异步读写(需 C# 13 / .NET 9+ 的 await foreach),并提供 ParallelEnumerate 用于 CPU 密集转换。
使用方式:安装命令为 dotnet add package Sep,或 dotnet add package Sep --version <version>,也可用 <PackageReference Include="Sep" Version="x.y.z" />。读取示例:using var reader = Sep.Reader(o => o with { HasHeader = true, Unescape = true, Trim = SepTrim.Both }).FromText(data); 然后 foreach (var row in reader) 中通过 row["Id"].Parse<int>() 或 row[1].ToString() 取值。写入示例:using var writer = reader.Spec.Writer().ToFile("output.csv"); 在循环中用 writer.NewRow(row) 并设置列值。
限制:SepReader.Row 和 SepWriter.Row 是 ref struct,不能存储到当前作用域之外,需要随机访问或 LINQ 式缓冲时应先物化;行迭代是逐行设计,并非经典集合模型;异步路径依赖较新运行时;ParallelEnumerate 建议先做单线程基准测试再使用。资料未提供具体版本、收费、价格或性能数据。