/// <summary> /// Adds the column and child columns into the columns collection. /// </summary> /// <param name="column"></param> /// <param name="columns"></param> /// <param name="parentColumnKey"></param> private void AddColumns(DexihDatalinkColumn column, IDictionary <long, DexihDatalinkColumn> columns, long?parentColumnKey = null) { if (column != null && !columns.ContainsKey(column.Key)) { if (column.ParentDatalinkColumnKey == null) { column.ParentDatalinkColumnKey = parentColumnKey; } columns[column.Key] = column; foreach (var childColumn in column.ChildColumns) { AddColumns(childColumn, columns, column.Key); } } }
/// <summary> /// Resets the childcolumns of a column with unique column instances. /// </summary> /// <param name="column"></param> /// <param name="columns"></param> private void ResetChildColumns(DexihDatalinkColumn column, IReadOnlyDictionary <long, DexihDatalinkColumn> columns) { if (column.ChildColumns != null && column.ChildColumns.Any()) { var childColumns = new HashSet <DexihDatalinkColumn>(); foreach (var childColumn in column.ChildColumns) { if (columns.ContainsKey(childColumn.Key)) { childColumns.Add(columns[childColumn.Key]); } else { childColumns.Add(childColumn); } ResetChildColumns(childColumn, columns); } column.ChildColumns = childColumns; } }