IQueryable_Where_Extensions.cs 872 B

12345678910111213141516171819202122232425262728
  1. using System;
  2. using System.Linq;
  3. using System.Linq.Expressions;
  4. using System.Runtime.CompilerServices;
  5. using Vit.Linq.QueryBuilder;
  6. namespace Vit.Extensions.Linq_Extensions
  7. {
  8. public static partial class IQueryable_Where_Extensions
  9. {
  10. #region Where
  11. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  12. public static IQueryable IQueryable_Where(this IQueryable query, IFilterRule rule)
  13. {
  14. LambdaExpression lambda = QueryBuilderService.Instance.ToLambdaExpression(rule, query.ElementType);
  15. if (lambda == null) return query;
  16. return query.Provider.CreateQuery(
  17. Expression.Call(
  18. typeof(Queryable), "Where",
  19. new Type[] { query.ElementType },
  20. query.Expression, Expression.Quote(lambda)));
  21. }
  22. #endregion
  23. }
  24. }