public QueryController() { lockObject = new object(); filtersForColumns = new Dictionary<string, FilterData>(); query = new Query(); }
public void CreateFilter(ref Query query) { StringBuilder filter = new StringBuilder(); foreach (KeyValuePair<string, FilterData> kvp in filtersForColumns) { StringBuilder partialFilter = createSingleFilter(kvp.Value); if (filter.Length > 0 && partialFilter.Length > 0) filter.Append(" AND "); if (partialFilter.Length > 0) { string valuePropertyBindingPath = String.Empty; string[] paths = kvp.Value.ValuePropertyBindingPath.Split(new Char[] { '.' }); foreach (string p in paths) { if (valuePropertyBindingPath != String.Empty) { valuePropertyBindingPath += "."; } valuePropertyBindingPath += p; filter.Append(valuePropertyBindingPath + " != null AND ");//eliminate: Nullable object must have a value and object fererence not set to an object } } filter.Append(partialFilter); } //init query query.FilterString = filter.ToString(); query.QueryParameters = Parameters; }