public IEnumerator <T> GetEnumerator() { var lastModifiedSupported = DataSet.SupportsEntityLastModified; // Build mapper mapper = DataSet.BuildMapper(reader.Header); while (true) { // Read CSV Record var record = reader.ReadRecord(); // End of Stream? if (record == null) { break; } // Create blank entity var entity = Activator.CreateInstance <T>(); // Set entity context entity.Context = context; // Use mapper to fill entity for (int i = 0; i < record.Count; i++) { mapper[i](entity, record[i]); } if (lastModifiedSupported && // Last modified supported entity.EntityLastModified != null && (entityLastModifiedMax == null || // Last modified never set entityLastModifiedMax < entity.EntityLastModified)) // Newer date { entityLastModifiedMax = entity.EntityLastModified; } // Set entity as current item in enumerator yield return(entity); } }