forked from SharpRepository/SharpRepository
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIRepositoryAggregates.cs
More file actions
114 lines (102 loc) · 8.38 KB
/
IRepositoryAggregates.cs
File metadata and controls
114 lines (102 loc) · 8.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using SharpRepository.Repository.Specifications;
namespace SharpRepository.Repository
{
public interface IRepositoryAggregates<T> where T : class
{
IEnumerable<TResult> GroupBy<TGroupKey, TResult>(Expression<Func<T, TGroupKey>> keySelector, Expression<Func<IGrouping<TGroupKey, T>, TResult>> resultSelector);
IEnumerable<TResult> GroupBy<TGroupKey, TResult>(ISpecification<T> criteria, Expression<Func<T, TGroupKey>> keySelector, Expression<Func<IGrouping<TGroupKey, T>, TResult>> resultSelector);
IEnumerable<TResult> GroupBy<TGroupKey, TResult>(Expression<Func<T, bool>> predicate, Expression<Func<T, TGroupKey>> keySelector, Expression<Func<IGrouping<TGroupKey, T>, TResult>> resultSelector);
int Count();
int Count(ISpecification<T> criteria);
int Count(Expression<Func<T, bool>> predicate);
long LongCount();
long LongCount(ISpecification<T> criteria);
long LongCount(Expression<Func<T, bool>> predicate);
int Sum(Expression<Func<T, int>> selector);
int Sum(ISpecification<T> criteria, Expression<Func<T, int>> selector);
int Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, int>> selector);
int? Sum(Expression<Func<T, int?>> selector);
int? Sum(ISpecification<T> criteria, Expression<Func<T, int?>> selector);
int? Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, int?>> selector);
long Sum(Expression<Func<T, long>> selector);
long Sum(ISpecification<T> criteria, Expression<Func<T, long>> selector);
long Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, long>> selector);
long? Sum(Expression<Func<T, long?>> selector);
long? Sum(ISpecification<T> criteria, Expression<Func<T, long?>> selector);
long? Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, long?>> selector);
decimal Sum(Expression<Func<T, decimal>> selector);
decimal Sum(ISpecification<T> criteria, Expression<Func<T, decimal>> selector);
decimal Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, decimal>> selector);
decimal? Sum(Expression<Func<T, decimal?>> selector);
decimal? Sum(ISpecification<T> criteria, Expression<Func<T, decimal?>> selector);
decimal? Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, decimal?>> selector);
double Sum(Expression<Func<T, double>> selector);
double Sum(ISpecification<T> criteria, Expression<Func<T, double>> selector);
double Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, double>> selector);
double? Sum(Expression<Func<T, double?>> selector);
double? Sum(ISpecification<T> criteria, Expression<Func<T, double?>> selector);
double? Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, double?>> selector);
float Sum(Expression<Func<T, float>> selector);
float Sum(ISpecification<T> criteria, Expression<Func<T, float>> selector);
float Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, float>> selector);
float? Sum(Expression<Func<T, float?>> selector);
float? Sum(ISpecification<T> criteria, Expression<Func<T, float?>> selector);
float? Sum(Expression<Func<T, bool>> predicate, Expression<Func<T, float?>> selector);
double Average(Expression<Func<T, int>> selector);
double Average(ISpecification<T> criteria, Expression<Func<T, int>> selector);
double Average(Expression<Func<T, bool>> predicate, Expression<Func<T, int>> selector);
double? Average(Expression<Func<T, int?>> selector);
double? Average(ISpecification<T> criteria, Expression<Func<T, int?>> selector);
double? Average(Expression<Func<T, bool>> predicate, Expression<Func<T, int?>> selector);
double Average(Expression<Func<T, long>> selector);
double Average(ISpecification<T> criteria, Expression<Func<T, long>> selector);
double Average(Expression<Func<T, bool>> predicate, Expression<Func<T, long>> selector);
double? Average(Expression<Func<T, long?>> selector);
double? Average(ISpecification<T> criteria, Expression<Func<T, long?>> selector);
double? Average(Expression<Func<T, bool>> predicate, Expression<Func<T, long?>> selector);
decimal Average(Expression<Func<T, decimal>> selector);
decimal Average(ISpecification<T> criteria, Expression<Func<T, decimal>> selector);
decimal Average(Expression<Func<T, bool>> predicate, Expression<Func<T, decimal>> selector);
decimal? Average(Expression<Func<T, decimal?>> selector);
decimal? Average(ISpecification<T> criteria, Expression<Func<T, decimal?>> selector);
decimal? Average(Expression<Func<T, bool>> predicate, Expression<Func<T, decimal?>> selector);
double Average(Expression<Func<T, double>> selector);
double Average(ISpecification<T> criteria, Expression<Func<T, double>> selector);
double Average(Expression<Func<T, bool>> predicate, Expression<Func<T, double>> selector);
double? Average(Expression<Func<T, double?>> selector);
double? Average(ISpecification<T> criteria, Expression<Func<T, double?>> selector);
double? Average(Expression<Func<T, bool>> predicate, Expression<Func<T, double?>> selector);
float Average(Expression<Func<T, float>> selector);
float Average(ISpecification<T> criteria, Expression<Func<T, float>> selector);
float Average(Expression<Func<T, bool>> predicate, Expression<Func<T, float>> selector);
float? Average(Expression<Func<T, float?>> selector);
float? Average(ISpecification<T> criteria, Expression<Func<T, float?>> selector);
float? Average(Expression<Func<T, bool>> predicate, Expression<Func<T, float?>> selector);
TResult Min<TResult>(Expression<Func<T, TResult>> selector);
TResult Min<TResult>(ISpecification<T> criteria, Expression<Func<T, TResult>> selector);
TResult Min<TResult>(Expression<Func<T, bool>> predicate, Expression<Func<T, TResult>> selector);
TResult Max<TResult>(Expression<Func<T, TResult>> selector);
TResult Max<TResult>(ISpecification<T> criteria, Expression<Func<T, TResult>> selector);
TResult Max<TResult>(Expression<Func<T, bool>> predicate, Expression<Func<T, TResult>> selector);
// convenience methods
IDictionary<TGroupKey, int> GroupCount<TGroupKey>(Expression<Func<T, TGroupKey>> selector);
IDictionary<TGroupKey, int> GroupCount<TGroupKey>(ISpecification<T> criteria, Expression<Func<T, TGroupKey>> selector);
IDictionary<TGroupKey, int> GroupCount<TGroupKey>(Expression<Func<T, bool>> predicate, Expression<Func<T, TGroupKey>> selector);
IDictionary<TGroupKey, long> GroupLongCount<TGroupKey>(Expression<Func<T, TGroupKey>> selector);
IDictionary<TGroupKey, long> GroupLongCount<TGroupKey>(ISpecification<T> criteria, Expression<Func<T, TGroupKey>> selector);
IDictionary<TGroupKey, long> GroupLongCount<TGroupKey>(Expression<Func<T, bool>> predicate, Expression<Func<T, TGroupKey>> selector);
// I can't get these to work with Expression<Func<T, TResult>> selector so it's throwing an error in EF5 when trying to use the Func<T. TResult> selector
// so for now I'm going to leave these convenience methods out and we can use GroupBy to handle it ourselves
// IDictionary<TGroupKey, TResult> GroupMin<TGroupKey, TResult>(Expression<Func<T, TGroupKey>> groupSelector, Func<T, TResult> selector);
// IDictionary<TGroupKey, TResult> GroupMin<TGroupKey, TResult>(ISpecification<T> criteria, Expression<Func<T, TGroupKey>> groupSelector, Func<T, TResult> selector);
// IDictionary<TGroupKey, TResult> GroupMin<TGroupKey, TResult>(Expression<Func<T, bool>> predicate, Expression<Func<T, TGroupKey>> groupSelector, Func<T, TResult> selector);
//
// IDictionary<TGroupKey, TResult> GroupMax<TGroupKey, TResult>(Expression<Func<T, TGroupKey>> groupSelector, Func<T, TResult> selector);
// IDictionary<TGroupKey, TResult> GroupMax<TGroupKey, TResult>(ISpecification<T> criteria, Expression<Func<T, TGroupKey>> groupSelector, Func<T, TResult> selector);
// IDictionary<TGroupKey, TResult> GroupMax<TGroupKey, TResult>(Expression<Func<T, bool>> predicate, Expression<Func<T, TGroupKey>> groupSelector, Func<T, TResult> selector);
}
}