/// <summary> /// Composes the filter used to search. /// </summary> /// <returns></returns> private FilterDefinition <BsonDocument> ComposeFilter() { FilterDefinition <BsonDocument> filter = null; for (int j = 0; j < QueryLists.Count; j++) { FilterDefinition <BsonDocument> rowFilter = null; RowEquivilators rowE = QueryLists[j][0].CombineRowsValue; int i = 0; try { rowFilter = QueryLists[j][0].ToString(); for (i = 1; i < QueryLists[j].Count; i++) { rowFilter = CombineFilters(rowFilter, QueryLists[j][i].ToString(), rowE, false); } } catch (NullReferenceException) { throw new QueryImproperLayoutException(j, i, string.Empty); } if (filter == null) { filter = rowFilter; } else { bool isEnd = (j == QueryLists.Count - 1); filter = CombineFilters(filter, rowFilter, QueryLists[j][QueryLists[j].Count - 1].CombineRowsValue, isEnd); } } return(filter); }
/// <summary> /// Combines fitlers. /// </summary> /// <param name="filter1"></param> /// <param name="filter2"></param> /// <param name="equivilator"></param> /// <param name="isEnd"></param> /// <returns></returns> private FilterDefinition <BsonDocument> CombineFilters(FilterDefinition <BsonDocument> filter1, FilterDefinition <BsonDocument> filter2, RowEquivilators equivilator, bool isEnd) { switch (equivilator) { case RowEquivilators.And: filter1 &= filter2; break; case RowEquivilators.Or: filter1 |= filter2; break; case RowEquivilators.None: if (!isEnd) { throw new QueryImproperLayoutException(0, 0, (object)RowEquivilators.None); } break; } return(filter1); }
public UpdateValueType(RowEquivilators row) => Row = row;