Exemplo n.º 1
0
        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);
                }
            }
        }