Exemplo n.º 1
0
 private bool HandleRecordSeparator(IList<object> fieldValues, ParseContext parseContext)
 {
     HandleFieldSeparator(fieldValues, parseContext);
     parseContext.ResetFieldNumber();
     if (parseContext.ReadingHeaderRow)
     {
         CheckHeaderRowForDuplicateFieldNames(fieldValues.Cast<string>());
         parseContext.ReadingHeaderRow = false;
         var headerRowFieldIndexes = new Dictionary<string, int>();
         for (var i = 0; i < fieldValues.Count; i++)
         {
             var key = (string)fieldValues[i];
             headerRowFieldIndexes[key] = i;
         }
         parseContext.HeaderRowFieldIndexes = headerRowFieldIndexes;
         if (parseContext.NamedFieldConverters != null)
         {
             var indexedFieldConverters = new Dictionary<int, Func<string, object>>();
             foreach (var kvp in parseContext.HeaderRowFieldIndexes)
             {
                 Func<string, object> converter;
                 if (parseContext.NamedFieldConverters.TryGetValue(kvp.Key, out converter))
                 {
                     indexedFieldConverters[kvp.Value] = converter;
                 }
             }
             parseContext.IndexedFieldConverters = indexedFieldConverters;
         }
         fieldValues.Clear();
         return false;
     }
     parseContext.RecordNumber++;
     return true;
 }