@@ -10,18 +10,19 @@ namespace SolrNet.Linq
1010 public static class SolrLinqExtensions
1111 {
1212 public static async Task < long > LongCountAsync < TSource > ( this IQueryable < TSource > query )
13- {
14- return await query . CountAsync ( ) ;
13+ {
14+ int countAsync = await query . CountAsync ( ) ;
15+ return ( long ) countAsync ;
1516 }
1617
1718 public static async Task < long > LongCountAsync < TSource > ( this IQueryable < TSource > query , Expression < Func < TSource , bool > > predicate )
1819 {
19- return await query . LongCountAsync ( ) ;
20+ return await query . Where ( predicate ) . LongCountAsync ( ) ;
2021 }
2122
2223 public static async Task < int > CountAsync < TSource > ( this IQueryable < TSource > query )
2324 {
24- if ( query . Provider is SolrQueryProvider < TSource > provider )
25+ if ( query . Provider is IAsyncProvider < TSource > provider )
2526 {
2627 MethodCallExpression mce = Expression . Call (
2728 null ,
@@ -38,11 +39,11 @@ public static async Task<int> CountAsync<TSource>(this IQueryable<TSource> query
3839
3940 public static async Task < int > CountAsync < TSource > ( this IQueryable < TSource > query , Expression < Func < TSource , bool > > predicate )
4041 {
41- if ( query . Provider is SolrQueryProvider < TSource > provider )
42+ if ( query . Provider is IAsyncProvider < TSource > provider )
4243 {
4344 var result = await provider . ExecuteAsync < int > ( Expression . Call (
4445 null ,
45- GetMethod < TSource > ( nameof ( Queryable . Any ) , 2 ) , query . Expression , predicate ) ) ;
46+ GetMethod < TSource > ( nameof ( Queryable . Count ) , 2 ) , query . Expression , predicate ) ) ;
4647
4748 return result ;
4849 }
@@ -52,7 +53,7 @@ public static async Task<int> CountAsync<TSource>(this IQueryable<TSource> query
5253
5354 public static async Task < bool > AnyAsync < TSource > ( this IQueryable < TSource > query )
5455 {
55- if ( query . Provider is SolrQueryProvider < TSource > provider )
56+ if ( query . Provider is IAsyncProvider < TSource > provider )
5657 {
5758 MethodCallExpression mce = Expression . Call (
5859 null ,
@@ -69,7 +70,7 @@ public static async Task<bool> AnyAsync<TSource>(this IQueryable<TSource> query)
6970
7071 public static async Task < bool > AnyAsync < TSource > ( this IQueryable < TSource > query , Expression < Func < TSource , bool > > predicate )
7172 {
72- if ( query . Provider is SolrQueryProvider < TSource > provider )
73+ if ( query . Provider is IAsyncProvider < TSource > provider )
7374 {
7475 bool result = await provider . ExecuteAsync < bool > ( Expression . Call (
7576 null ,
@@ -83,7 +84,7 @@ public static async Task<bool> AnyAsync<TSource>(this IQueryable<TSource> query,
8384
8485 public static async Task < TSource > FirstAsync < TSource > ( this IQueryable < TSource > query )
8586 {
86- if ( query . Provider is SolrQueryProvider < TSource > provider )
87+ if ( query . Provider is IAsyncProvider < TSource > provider )
8788 {
8889 MethodCallExpression mce = Expression . Call (
8990 null ,
@@ -100,7 +101,7 @@ public static async Task<TSource> FirstAsync<TSource>(this IQueryable<TSource> q
100101
101102 public static async Task < TSource > FirstAsync < TSource > ( this IQueryable < TSource > query , Expression < Func < TSource , bool > > predicate )
102103 {
103- if ( query . Provider is SolrQueryProvider < TSource > provider )
104+ if ( query . Provider is IAsyncProvider < TSource > provider )
104105 {
105106 TSource result = await provider . ExecuteAsync < TSource > ( Expression . Call (
106107 null ,
@@ -114,7 +115,7 @@ public static async Task<TSource> FirstAsync<TSource>(this IQueryable<TSource> q
114115
115116 public static async Task < TSource > FirstOrDefaultAsync < TSource > ( this IQueryable < TSource > query )
116117 {
117- if ( query . Provider is SolrQueryProvider < TSource > provider )
118+ if ( query . Provider is IAsyncProvider < TSource > provider )
118119 {
119120 TSource result = await provider . ExecuteAsync < TSource > ( Expression . Call (
120121 null ,
@@ -128,7 +129,7 @@ public static async Task<TSource> FirstOrDefaultAsync<TSource>(this IQueryable<T
128129
129130 public static async Task < TSource > FirstOrDefaultAsync < TSource > ( this IQueryable < TSource > query , Expression < Func < TSource , bool > > predicate )
130131 {
131- if ( query . Provider is SolrQueryProvider < TSource > provider )
132+ if ( query . Provider is IAsyncProvider < TSource > provider )
132133 {
133134 TSource result = await provider . ExecuteAsync < TSource > ( Expression . Call (
134135 null ,
@@ -142,7 +143,7 @@ public static async Task<TSource> FirstOrDefaultAsync<TSource>(this IQueryable<T
142143
143144 public static async Task < TSource > SingleAsync < TSource > ( this IQueryable < TSource > query )
144145 {
145- if ( query . Provider is SolrQueryProvider < TSource > provider )
146+ if ( query . Provider is IAsyncProvider < TSource > provider )
146147 {
147148 TSource result = await provider . ExecuteAsync < TSource > ( Expression . Call (
148149 null ,
@@ -156,7 +157,7 @@ public static async Task<TSource> SingleAsync<TSource>(this IQueryable<TSource>
156157
157158 public static async Task < TSource > SingleAsync < TSource > ( this IQueryable < TSource > query , Expression < Func < TSource , bool > > predicate )
158159 {
159- if ( query . Provider is SolrQueryProvider < TSource > provider )
160+ if ( query . Provider is IAsyncProvider < TSource > provider )
160161 {
161162 TSource result = await provider . ExecuteAsync < TSource > ( Expression . Call (
162163 null ,
@@ -170,7 +171,7 @@ public static async Task<TSource> SingleAsync<TSource>(this IQueryable<TSource>
170171
171172 public static async Task < TSource > SingleOrDefaultAsync < TSource > ( this IQueryable < TSource > query )
172173 {
173- if ( query . Provider is SolrQueryProvider < TSource > provider )
174+ if ( query . Provider is IAsyncProvider < TSource > provider )
174175 {
175176 TSource result = await provider . ExecuteAsync < TSource > ( Expression . Call (
176177 null ,
@@ -184,7 +185,7 @@ public static async Task<TSource> SingleOrDefaultAsync<TSource>(this IQueryable<
184185
185186 public static async Task < TSource > SingleOrDefaultAsync < TSource > ( this IQueryable < TSource > query , Expression < Func < TSource , bool > > predicate )
186187 {
187- if ( query . Provider is SolrQueryProvider < TSource > provider )
188+ if ( query . Provider is IAsyncProvider < TSource > provider )
188189 {
189190 TSource result = await provider . ExecuteAsync < TSource > ( Expression . Call (
190191 null ,
0 commit comments