private void GenerateRecordSet(RecordSet recordSet) { IDictionaryEnumerator ide = _nodeStore.GetEnumerator(); while (ide.MoveNext()) { if (ide.Value is LeafNode) { LeafNode leaf = (LeafNode)ide.Value; List <string> keys = leaf.Keys; if (_isGrouped) { RecordRow row = recordSet.CreateRow() as RecordRow; if (leaf.AttributeValues != null) { foreach (KeyValuePair <string, object> entry in leaf.AttributeValues.Values) { if (recordSet.Columns[entry.Key].DataType == ColumnDataType.Object) { recordSet.Columns[entry.Key].DataType = RecordSet.ToColumnDataType(entry.Value); } row[entry.Key] = entry.Value; } } row.Tag = keys; recordSet.Rows.Add(row); } else { foreach (string key in keys) { RecordRow row = recordSet.CreateRow() as RecordRow; if (leaf.AttributeValues != null) { foreach (KeyValuePair <string, object> entry in leaf.AttributeValues.Values) { if (recordSet.Columns[entry.Key].DataType == ColumnDataType.Object) { recordSet.Columns[entry.Key].DataType = RecordSet.ToColumnDataType(entry.Value); } row[entry.Key] = entry.Value; } } row[QueryKeyWords.KeyColumn] = key; recordSet.Rows.Add(row); } } } else { (ide.Value as MultiRootTree).GenerateRecordSet(recordSet); } } }