private int GenerateRecordSet(RecordSet recordSet) { IDictionaryEnumerator ide = _ht.GetEnumerator(); int rowsAdded = 0; while (ide.MoveNext()) { if (ide.Value is ArrayList) { rowsAdded++; recordSet.AddRow(); if (recordSet.GetColumnDataType(_currentAttribute) == ColumnDataType.Object) { recordSet.SetColumnDataType(_currentAttribute, RecordSet.ToColumnDataType(ide.Key)); } recordSet.Add(ide.Key, recordSet.RowCount - 1, _currentAttribute); recordSet.Add(ide.Value, recordSet.RowCount - 1, recordSet.ColumnCount - 1); } else { rowsAdded = (ide.Value as MultiRootTree).GenerateRecordSet(recordSet); for (int i = 0; i < rowsAdded; i++) { recordSet.Add(ide.Key, recordSet.RowCount - i - 1, _currentAttribute); if (recordSet.GetColumnDataType(_currentAttribute) == ColumnDataType.Object) { recordSet.SetColumnDataType(_currentAttribute, RecordSet.ToColumnDataType(ide.Key)); } } } } return(rowsAdded); }