I’m trying to write a function that sorts by column name
I have a problem in the second case case = “Count”. How can I convert convert IQueryable to IOrderedQueryable.
Thank You
public PagedResults<activity> getList(Expression<Func<activity, bool>> criteria, PagingSpecification paging)
{
IQueryable<activity> search = criteria != null? Query.Where(criteria): Query;
IOrderedQueryable<activity> orderedQuery;
switch (paging.SortColumnName)
{=
case "Name":
orderedQuery = (paging.SortDirection == SortDirection.Ascending)
? search.OrderBy(e => e.Person.Name)
: search.OrderByDescending(e => e.Person.Name);
break;
case "Count":
orderedQuery = (paging.SortDirection == SortDirection.Ascending)
? search.ToList().OrderBy(e => e.GetCount()).AsQueryable<activity>()
: search.ToList().OrderByDescending(e => e.GetCount()).AsQueryable<activity>();
break;
default:
orderedQuery = GetOrderedQueryable(search, paging.SortColumnName, paging.SortDirection);
break;
}
IQueryable<activity> dataQuery = orderedQuery.Skip(paging.StartIndex).Take(paging.PageSize);
return new PagedResults<activity>(dataQuery.ToList(), search.LongCount());
}
Call
AsQueryablebeforeOrderBy:OrderByturns anIEnumerable(likeList) into anIOrderedEnumerable, but turns anIQueryableinto anIOrderedQueryable.