using System;
using System.Linq;
using System.Linq.Expressions;
namespace TradeUsedSale.Repositories.Utils
{
public static class QueryableExtensions
{
///
/// Used for paging. Can be used as an alternative to Skip(...).Take(...) chaining.
///
public static IQueryable PageBy(this IQueryable query, int skipCount, int maxResultCount)
{
return query.Skip(skipCount).Take(maxResultCount);
}
///
/// Used for paging. Can be used as an alternative to Skip(...).Take(...) chaining.
///
public static TQueryable PageBy(this TQueryable query, int skipCount, int maxResultCount)
where TQueryable : IQueryable
{
return (TQueryable)query.Skip(skipCount).Take(maxResultCount);
}
///
/// Filters a by given predicate if given condition is true.
///
/// Queryable to apply filtering
/// A boolean value
/// Predicate to filter the query
/// Filtered or not filtered query based on
public static IQueryable WhereIf(this IQueryable query, bool condition,
Expression> predicate)
{
return condition
? query.Where(predicate)
: query;
}
///
/// Filters a by given predicate if given condition is true.
///
/// Queryable to apply filtering
/// A boolean value
/// Predicate to filter the query
/// Filtered or not filtered query based on
public static TQueryable WhereIf(this TQueryable query, bool condition,
Expression> predicate)
where TQueryable : IQueryable
{
return condition
? (TQueryable)query.Where(predicate)
: query;
}
///
/// Filters a by given predicate if given condition is true.
///
/// Queryable to apply filtering
/// A boolean value
/// Predicate to filter the query
/// Filtered or not filtered query based on
public static IQueryable WhereIf(this IQueryable query, bool condition,
Expression> predicate)
{
return condition
? query.Where(predicate)
: query;
}
///
/// Filters a by given predicate if given condition is true.
///
/// Queryable to apply filtering
/// A boolean value
/// Predicate to filter the query
/// Filtered or not filtered query based on
public static TQueryable WhereIf(this TQueryable query, bool condition,
Expression> predicate)
where TQueryable : IQueryable
{
return condition
? (TQueryable)query.Where(predicate)
: query;
}
}
}