public static void Write(TextWriter writer, IEnumerable<Dictionary<string, string>> records) { if (records == null) return; //AOT var allKeys = new System.Collections.Generic.HashSet<string>(); var cachedRecords = new List<IDictionary<string, string>>(); foreach (var record in records) { foreach (var key in record.Keys) { if (!allKeys.Contains(key)) { allKeys.Add(key); } } cachedRecords.Add(record); } var headers = allKeys.OrderBy(key => key).ToList(); if (!CsvConfig<Dictionary<string, string>>.OmitHeaders) { WriteRow(writer, headers); } foreach (var cachedRecord in cachedRecords) { var fullRecord = new List<string>(); foreach (var header in headers) { fullRecord.Add(cachedRecord.ContainsKey(header) ? cachedRecord[header] : null); } WriteRow(writer, fullRecord); } }
public static void Write(TextWriter writer, IEnumerable <Dictionary <string, string> > records) { if (records == null) { return; //AOT } var allKeys = new System.Collections.Generic.HashSet <string>(); var cachedRecords = new List <IDictionary <string, string> >(); foreach (var record in records) { foreach (var key in record.Keys) { if (!allKeys.Contains(key)) { allKeys.Add(key); } } cachedRecords.Add(record); } var headers = allKeys.OrderBy(key => key).ToList(); if (!CsvConfig <Dictionary <string, string> > .OmitHeaders) { WriteRow(writer, headers); } foreach (var cachedRecord in cachedRecords) { var fullRecord = headers.ConvertAll(header => cachedRecord.ContainsKey(header) ? cachedRecord[header] : null); WriteRow(writer, fullRecord); } }