From f1a932bbd10157328cc2355c285ef055761ebcf6 Mon Sep 17 00:00:00 2001 From: David Lebee Date: Thu, 18 Oct 2018 19:21:17 -0500 Subject: [PATCH] count and long count --- .../Extensions/QueryableExtensions.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs b/PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs index 868217b..d905610 100644 --- a/PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs +++ b/PoweredSoft.DynamicLinq/Extensions/QueryableExtensions.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; +using System.Reflection; using System.Text; using System.Threading.Tasks; @@ -143,5 +144,13 @@ namespace PoweredSoft.DynamicLinq var ret = query.Cast().ToList(); return ret; } + + private static MethodInfo _internalCount = typeof(QueryableExtensions).GetMethod(nameof(QueryableExtensions._internalCount), BindingFlags.Static | BindingFlags.NonPublic); + private static int InternalCount(IQueryable q) => q.Count(); + public static int Count(this IQueryable query) => (int)_internalCount.MakeGenericMethod(query.ElementType).Invoke(null, new object[] {query}); + + private static MethodInfo _internalLongCount = typeof(QueryableExtensions).GetMethod(nameof(QueryableExtensions._internalLongCount), BindingFlags.Static | BindingFlags.NonPublic); + private static long InternalLongCount(IQueryable q) => q.LongCount(); + public static long LongCount(this IQueryable query) => (int)_internalLongCount.MakeGenericMethod(query.ElementType).Invoke(null, new object[] { query }); } }