Esempio n. 1
0
		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);
		    }
		}
Esempio n. 2
0
        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);
            }
        }