CSV Enumerable
A C# streaming mapper for controlled delimiter-separated data that resolves header/property mappings once and reads .gz inputs directly through GZipStream.
Using IEnumerable<T> does not by itself make a parser inexpensive; the repeated row path still determines most of the cost. In this implementation, public model properties are discovered up front. Once the header is read, each input column is bound to a PropertyInfo position and later rows use that mapping rather than performing property-name discovery again.
Compressed input is consumed directly through GZipStream, so a .gz source does not need a temporary decompressed file before enumeration starts. The full dataset is not accumulated in a List<T>. This is still not an allocation-free design: field splitting, conversion and reflection assignment have real costs.
The supported format is intentionally narrower than a universal CSV reader. Quoted delimiters, escaped quotes and multiline fields are outside the contract; data that needs those rules should use a full parser. DbDataReader Streaming Serialization applies the same broader principle—resolve stable metadata once, shorten the repeated path—to database result sets instead of delimited files.