public static Dictionary <string, List <string> > GetColumnValues( DataTable dataTable, List <ColumnDependency> columnDependencies, TableDependencyType sourceColumnDependencyType, TableDependencyType outputColumnDependencyType, bool excludeNullValues, bool distinct) { Dictionary <string, List <string> > valuesCollection = new Dictionary <string, List <string> >(); foreach (ColumnDependency columnDependency in columnDependencies) { List <string> values = dataTable.AsEnumerable().Select(row => row[columnDependency.GetColumnNameByDependency(sourceColumnDependencyType)].ToString()).ToList(); // Remove null values if (excludeNullValues) { values = values.Where(value => !string.IsNullOrWhiteSpace(value)).ToList(); } if (distinct) { values = values.Distinct().ToList(); } if (values.Count > 0) { valuesCollection.Add(columnDependency.GetColumnNameByDependency(outputColumnDependencyType), values); } } return(valuesCollection); }
public string GetColumnNameByDependency(TableDependencyType tableDependencyType) { switch (tableDependencyType) { case TableDependencyType.ParentDependency: return(ParentColumnName); case TableDependencyType.ChildDependency: return(ChildColumnName); default: throw new System.Exception("TableDependencyType not mapped to a ColumnDependency Name."); } }
public TableDependency(List <IgnoredDependency> ignoredDependencyGrouping) { if (ignoredDependencyGrouping.Count < 1) { throw new System.Exception("Unable to create TableDependency from empty IgnoredDependency Grouping list parameter."); } ColumnDependencies = new ColumnDependencyCollection(); string dependencyName = ignoredDependencyGrouping[0].DependencyName; string parentTableSchema = ignoredDependencyGrouping[0].ParentTableSchema; string parentTableName = ignoredDependencyGrouping[0].ParentTableName; string childTableSchema = ignoredDependencyGrouping[0].ChildTableSchema; string childTableName = ignoredDependencyGrouping[0].ChildTableName; TableDependencyType tableDependencyType = ignoredDependencyGrouping[0].TableDependencyType; foreach (IgnoredDependency ignoredDependency in ignoredDependencyGrouping) { if (dependencyName != ignoredDependency.DependencyName) { throw new System.Exception($"Cannot create TableDependency from unrelated ignored dependencies. Dependency Name {ignoredDependency.DependencyName} does not match {dependencyName}"); } if (parentTableSchema != ignoredDependency.ParentTableSchema) { throw new System.Exception($"Cannot create TableDependency from unrelated ignored dependencies. Dependency Name {ignoredDependency.ParentTableSchema} does not match {parentTableSchema}"); } if (parentTableName != ignoredDependency.ParentTableName) { throw new System.Exception($"Cannot create TableDependency from unrelated ignored dependencies. Dependency Name {ignoredDependency.ParentTableName} does not match {parentTableName}"); } if (childTableSchema != ignoredDependency.ChildTableSchema) { throw new System.Exception($"Cannot create TableDependency from unrelated ignored dependencies. Dependency Name {ignoredDependency.ChildTableSchema} does not match {childTableSchema}"); } if (childTableName != ignoredDependency.ChildTableName) { throw new System.Exception($"Cannot create TableDependency from unrelated ignored dependencies. Dependency Name {ignoredDependency.ChildTableName} does not match {childTableName}"); } if (tableDependencyType != ignoredDependency.TableDependencyType) { throw new System.Exception($"Cannot create TableDependency from unrelated ignored dependencies. Dependency Name {ignoredDependency.TableDependencyType} does not match {tableDependencyType}"); } ColumnDependencies.Add(new ColumnDependency(ignoredDependency.ParentColumnName, ignoredDependency.ChildColumnName)); } ParentTableName = new TableName(parentTableSchema, parentTableName); ChildTableName = new TableName(childTableSchema, childTableName); ParentColumnName = null; ChildColumnName = null; }