private List <char[]> ProcessEnumerableDataProperty(IEdiSubDataRecordEnumerableSettings settings, CultureInfo cultureInfo) { var dataRecordEnumerable = settings.PropertyInfo.GetValue(settings.DataRecord) as System.Collections.IEnumerable; if (dataRecordEnumerable != null) { (var minIndex, var maxIndex) = GetRowIndexRange(settings.DataProperty, -1, -1); var dataRecordSettings = new EdiDataRecordSettings { DataProperty = settings.DataProperty, MaxLineLength = settings.MaxLineLength, MaxLineCount = settings.MaxLineCount, CultureInfo = cultureInfo }; foreach (var subItem in dataRecordEnumerable) { dataRecordSettings.DataRecord = subItem; var enumerableResult = ProcessDataRecord(dataRecordSettings); if (settings.DataProperty.IsSameDataRecord) { settings.TargetDataRows = CombineDataRows(settings.TargetDataRows, enumerableResult).ToList(); } else if (settings.DataProperty.CanRepeatEDI) { var resultSet = new EnumerableResultSet { TargetDataRows = settings.TargetDataRows, ResultdataRows = enumerableResult, MinLineIndex = minIndex, MaxLineIndex = maxIndex, MaxLineLength = settings.MaxLineLength }; AddEnumerableResultToDataRows(resultSet); } else { settings.SubDataRows.Add(enumerableResult); } } } return(settings.TargetDataRows); }
private List <char[]> AddEnumerableResultToDataRows(EnumerableResultSet enumerableResultSet) { var arrayResult = enumerableResultSet.ResultdataRows.ToArray(); while (enumerableResultSet.TargetDataRows.Count < enumerableResultSet.MinLineIndex) { enumerableResultSet.TargetDataRows.Add(InitialiseDataRow(enumerableResultSet.MaxLineLength)); } for (var index = enumerableResultSet.MinLineIndex; index <= enumerableResultSet.MaxLineIndex; index++) { if (arrayResult.Length > index) { enumerableResultSet.TargetDataRows.Add(arrayResult[index]); } else { enumerableResultSet.TargetDataRows.Add(InitialiseDataRow(enumerableResultSet.MaxLineLength)); } } return(enumerableResultSet.TargetDataRows); }