From fce55178bb334b295e48ed4a1e06e0f80b1943b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Leb=C3=A9e?= Date: Wed, 7 Mar 2018 20:16:15 -0600 Subject: [PATCH] adding extension method straight on where. --- .../Extensions/DbContextExtensions.cs | 6 ++++++ PoweredSoft.DynamicLinq.Test/ComplexQueriesTests.cs | 7 +++++++ PoweredSoft.DynamicLinq/Extensions/EnumerableExtensions.cs | 3 +++ PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs | 5 +++-- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/PoweredSoft.DynamicLinq.EntityFramework/Extensions/DbContextExtensions.cs b/PoweredSoft.DynamicLinq.EntityFramework/Extensions/DbContextExtensions.cs index 001c6cc..f0d7a9a 100644 --- a/PoweredSoft.DynamicLinq.EntityFramework/Extensions/DbContextExtensions.cs +++ b/PoweredSoft.DynamicLinq.EntityFramework/Extensions/DbContextExtensions.cs @@ -30,5 +30,11 @@ namespace PoweredSoft.DynamicLinq.EntityFramework query = query.Query(callback); return query; } + + public static IQueryable Where(this DbContext context, Type pocoType, Action callback) + => context.Query(pocoType, callback); + + public static IQueryable Where(this DbContext context, Action callback) + where T : class => context.Query(callback); } } diff --git a/PoweredSoft.DynamicLinq.Test/ComplexQueriesTests.cs b/PoweredSoft.DynamicLinq.Test/ComplexQueriesTests.cs index 9912dc5..2836393 100644 --- a/PoweredSoft.DynamicLinq.Test/ComplexQueriesTests.cs +++ b/PoweredSoft.DynamicLinq.Test/ComplexQueriesTests.cs @@ -112,7 +112,14 @@ namespace PoweredSoft.DynamicLinq.Test qb.And("Posts.Comments.Email", ConditionOperators.Equal, "john.doe@me.com", collectionHandling: QueryCollectionHandling.Any); }); + var query2 = query.Where(qb => + { + qb.NullChecking(); + qb.And("Posts.Comments.Email", ConditionOperators.Equal, "john.doe@me.com", collectionHandling: QueryCollectionHandling.Any); + }); + Assert.AreEqual(1, query.Count()); + Assert.AreEqual(1, query2.Count()); } } diff --git a/PoweredSoft.DynamicLinq/Extensions/EnumerableExtensions.cs b/PoweredSoft.DynamicLinq/Extensions/EnumerableExtensions.cs index 695ecec..5312623 100644 --- a/PoweredSoft.DynamicLinq/Extensions/EnumerableExtensions.cs +++ b/PoweredSoft.DynamicLinq/Extensions/EnumerableExtensions.cs @@ -13,6 +13,9 @@ namespace PoweredSoft.DynamicLinq QueryCollectionHandling collectionHandling = QueryCollectionHandling.Any, StringComparison? stringComparision = null) => list.AsQueryable().Where(path, conditionOperator, value, convertStrategy: convertStrategy, collectionHandling: collectionHandling, stringComparision: stringComparision); + public static IEnumerable Where(this IEnumerable list, Action> callback) + => list.Query(callback); + public static IEnumerable Query(this IEnumerable list, Action> callback) => list.AsQueryable().Query(callback); diff --git a/PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs b/PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs index 2ad2ec7..5e7058a 100644 --- a/PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs +++ b/PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs @@ -18,8 +18,9 @@ namespace PoweredSoft.DynamicLinq query = query.Query(qb => qb.Compare(path, conditionOperator, value, convertStrategy: convertStrategy, collectionHandling: collectionHandling, stringComparision: stringComparision)); return query; } - - + + public static IQueryable Where(this IQueryable query, Action> callback) + => query.Query(callback); public static IQueryable Query (this IQueryable query, Action> callback) {