private static Expression GetMethodCallExpression(Enums.LogicalOperator logicalOperator, Expression filterExpression, MethodCallExpression methodCallExpression) { switch (logicalOperator) { case Enums.LogicalOperator.And: filterExpression = filterExpression == null ? (Expression)methodCallExpression : Expression.And(filterExpression, methodCallExpression); break; case Enums.LogicalOperator.Or: filterExpression = filterExpression == null ? (Expression)methodCallExpression : Expression.Or(filterExpression, methodCallExpression); break; default: filterExpression = filterExpression == null ? (Expression)methodCallExpression : Expression.And(filterExpression, methodCallExpression); break; } return(filterExpression); }
/// <summary> /// Add filter to data model /// </summary> /// <param name="dataModel"></param> /// <param name="columnName"></param> /// <param name="columnType"></param> /// <param name="columnValue"></param> /// <param name="_operator"></param> /// <param name="logicalOperator"></param> /// <returns></returns> public void AddFilter(string columnName, Enums.ParameterType columnType, string columnValue, Enums.CompareOperator _operator, Enums.LogicalOperator logicalOperator = Enums.LogicalOperator.none) { if (DataModel.Filters == null) { DataModel.Filters = new List <Filter>(); } DataModel.Filters.Add(new Filter() { Column = columnName, ValueType = columnType.ToString().Remove(0, 1), Value = columnValue, Operator = _operator.ToString(), LogicalOperator = logicalOperator.ToString() }); }