示例#1
0
        /// <summary>
        /// Create a row filter for the specified factors.
        /// </summary>
        /// <param name="storage">Storage service</param>
        /// <param name="factors">A list of factors to build a filter for.</param>
        /// <param name="columnsInTable">Columns in table</param>
        private string CreateRowFilter(IStorageReader storage, IEnumerable <ISimulationGeneratorFactors> factors, IEnumerable <string> columnsInTable)
        {
            string factorFilters = null;

            List <ColumnNameValues> columns = new List <ColumnNameValues>();

            foreach (var factor in factors)
            {
                foreach (var factorColumn in factor.Columns)
                {
                    if (columnsInTable.Contains(factorColumn.Key))
                    {
                        ColumnNameValues column = columns.Find(col => col.ColumnName == factorColumn.Key);
                        if (column == null)
                        {
                            columns.Add(new ColumnNameValues(factorColumn.Key, factorColumn.Value));
                        }
                        else if (!column.ColumnValues.Contains(factorColumn.Value))
                        {
                            column.ColumnValues.Add(factorColumn.Value);
                        }
                    }
                }
            }

            foreach (var column in columns)
            {
                if (factorFilters != null)
                {
                    factorFilters += " AND ";
                }
                if (column.ColumnValues.Count == 1)
                {
                    foreach (var value in column.ColumnValues)
                    {
                        factorFilters += column.ColumnName + " = '" + value + "'";
                    }
                }
                else
                {
                    factorFilters += column.ColumnName + " IN (" +
                                     StringUtilities.Build(column.ColumnValues, ",", "'", "'") +
                                     ")";
                }
            }

            return(factorFilters);
        }
示例#2
0
        /// <summary>
        /// Create a row filter for the specified factors.
        /// </summary>
        /// <param name="factors">A list of factors to build a filter for</param>
        private string CreateRowFilter(IEnumerable <ISimulationGeneratorFactors> factors)
        {
            string factorFilters = null;

            List <ColumnNameValues> columns = new List <ColumnNameValues>();

            foreach (var factor in factors)
            {
                ColumnNameValues column = columns.Find(col => col.ColumnName == factor.ColumnName);
                if (column == null)
                {
                    columns.Add(new ColumnNameValues(factor.ColumnName, factor.ColumnValues));
                }
                else
                {
                    column.ColumnValues.AddRange(factor.ColumnValues);
                }
            }

            foreach (var column in columns)
            {
                if (factorFilters != null)
                {
                    factorFilters += " OR ";
                }
                if (column.ColumnValues.Count == 1)
                {
                    foreach (var value in column.ColumnValues)
                    {
                        factorFilters += column.ColumnName + " = '" + value + "'";
                    }
                }
                else
                {
                    factorFilters += column.ColumnName + " IN (" +
                                     StringUtilities.Build(column.ColumnValues, ",", "'", "'") +
                                     ")";
                }
            }

            return(factorFilters);
        }