Queryable_Where_Extensions.cs 771 B

12345678910111213141516171819202122232425262728293031
  1. using System.Linq;
  2. using System.Runtime.CompilerServices;
  3. using Vit.Linq.QueryBuilder;
  4. namespace Vit.Extensions.Linq_Extensions
  5. {
  6. public static partial class Queryable_Where_Extensions
  7. {
  8. #region Where
  9. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  10. public static IQueryable<T> Where<T>(this IQueryable<T> query, IFilterRule rule)
  11. where T : class
  12. {
  13. if (query == null || rule == null) return query;
  14. var predicate = QueryBuilderService.Instance.ToExpression<T>(rule);
  15. if (predicate == null)
  16. {
  17. return query;
  18. }
  19. else
  20. {
  21. return query.Where(predicate);
  22. }
  23. }
  24. #endregion
  25. }
  26. }