private static SimplePredicate FilterCategory(ItemCategoryFilterDto filter)
        {
            if (filter.CategoryID == 0)
            {
                return(null);
            }

            return(new SimplePredicate(nameof(ItemCategory.CategoryID), ValueComparingOperator.Equal,
                                       filter.CategoryID));
        }
        protected override IQuery <ItemCategory> ApplyWhereClause(IQuery <ItemCategory> query, ItemCategoryFilterDto filter)
        {
            var definedPredicates = new List <IPredicate>();

            AddIfDefined(FilterUser(filter), definedPredicates);
            AddIfDefined(FilterCategory(filter), definedPredicates);
            if (definedPredicates.Count == 0)
            {
                return(query);
            }
            if (definedPredicates.Count == 1)
            {
                return(query.Where(definedPredicates.First()));
            }
            var wherePredicate = new CompositePredicate(definedPredicates);

            return(query.Where(wherePredicate));
        }