Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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.");
            }
        }
Esempio n. 3
0
        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;
        }