/// <summary> /// Sets the query filter expression for properties of the specified type. /// </summary> /// <param name="queryFilter">The query filter to use.</param> /// <typeparam name="T">The type of the properties to use this expression for.</typeparam> /// <returns>The query filter expression that is registered.</returns> public IQueryFilterExpression <T> SetExpression <T>(IQueryFilterExpression <T> queryFilter) { var dispatcher = GenericDispatcher.GetFor(queryFilter); var type = typeof(T); if (_filters.ContainsKey(type)) { _filters[type] = dispatcher; } else { _filters.Add(type, dispatcher); } return(queryFilter); }
private static string GetODataQueryOptionFromFilter(IQueryFilterExpression filter) { var propertyStringName = filter.PropertyName.GetColumnName(); var parameter = filter.Parameter; switch (filter.Operator) { case FilterExpressionOperator.Equals: { var propertyType = filter.PropertyName.GetSchemaInfo().ColumnType; if (typeof(string) == propertyType) { return(propertyStringName + " eq '" + parameter + "'"); } if (typeof(Int32) == propertyType) { return(parameter + " eq " + propertyStringName); } return(null); } case FilterExpressionOperator.Likes: { var propertyType = filter.PropertyName.GetSchemaInfo().ColumnType; if (typeof(string) == propertyType) { return("substringof('" + parameter + "'," + propertyStringName + ")"); } if (typeof(Int32) == propertyType) { return(parameter + " eq " + propertyStringName); } return(null); } default: throw new ArgumentException(); } }
public IQueryFilterComplexExpression Or(IQueryFilterExpression filterExpression) { _filters.Add(filterExpression); return(this); }
public IQueryFilterComplexExpression FilterWith(IQueryFilterExpression filterExpression) { return(Or(filterExpression)); }
public static GenericDispatcher GetFor <T>(IQueryFilterExpression <T> queryFilter) { return(new GenericDispatcher(queryFilter)); }