Skip to content

Commit b136028

Browse files
committed
Don't re-evaluate to get total count
1 parent 40a8466 commit b136028

File tree

2 files changed

+6
-10
lines changed

2 files changed

+6
-10
lines changed

Mvc.JQuery.Datatables/DataTablesFilter.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace Mvc.JQuery.Datatables
77
{
88
public class DataTablesFilter
99
{
10-
public IQueryable FilterPagingSortingSearch(DataTablesParam dtParameters, IQueryable data, out int totalRecordsDisplay, Tuple<string, string, Type>[] columns)
10+
public IQueryable FilterPagingSortingSearch(DataTablesParam dtParameters, IQueryable data, Tuple<string, string, Type>[] columns)
1111
{
1212
if (!String.IsNullOrEmpty(dtParameters.sSearch))
1313
{
@@ -47,8 +47,6 @@ public IQueryable FilterPagingSortingSearch(DataTablesParam dtParameters, IQuery
4747
sortString += columnName + " " + sortDir;
4848
}
4949

50-
totalRecordsDisplay = data.Count();
51-
5250
data = data.OrderBy(sortString);
5351
data = data.Skip(dtParameters.iDisplayStart);
5452
if (dtParameters.iDisplayLength > -1)

Mvc.JQuery.Datatables/DataTablesResult.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,13 @@ public static void RegisterFilter<TVal>(GuardedValueTransformer<TVal> filter)
8585
private DataTablesData GetResults(IQueryable<T> data, DataTablesParam param, Tuple<string, string, Type>[] searchColumns)
8686
{
8787

88-
int totalRecords = data.Count();
89-
90-
91-
int totalRecordsDisplay;
88+
int totalRecords = data.Count(); //annoying this, as it causes an extra evaluation..
9289

9390
var filters = new DataTablesFilter();
9491

9592

9693
var dataArray = data.Select(_transform).AsQueryable();
97-
dataArray = filters.FilterPagingSortingSearch(param, dataArray, out totalRecordsDisplay, searchColumns).Cast<TRes>();
94+
dataArray = filters.FilterPagingSortingSearch(param, dataArray, searchColumns).Cast<TRes>();
9895

9996
var type = typeof(TRes);
10097
var properties = type.GetProperties();
@@ -104,12 +101,13 @@ private DataTablesData GetResults(IQueryable<T> data, DataTablesParam param, Tup
104101
let values = pairs.Select(p => GetTransformedValue(p.PropertyType, p.Value))
105102
select values;
106103

104+
IEnumerable<object>[] aaData = toArrayQuery.ToArray();
107105
var result = new DataTablesData
108106
{
109107
iTotalRecords = totalRecords,
110-
iTotalDisplayRecords = totalRecordsDisplay,
108+
iTotalDisplayRecords = aaData.Length,
111109
sEcho = param.sEcho,
112-
aaData = toArrayQuery.ToArray()
110+
aaData = aaData
113111
};
114112

115113
return result;

0 commit comments

Comments
 (0)