/// <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); }
/// <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); }