nullException
nullException

Reputation: 1112

C# LINQ to Entities does not recognize the method

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());
    }

Upvotes: 3

Views: 1149

Answers (1)

kevingessner
kevingessner

Reputation: 18995

Call AsQueryable before OrderBy:

orderedQuery = (paging.SortDirection == SortDirection.Ascending)
    ? search.ToList().AsQueryable<activity>().OrderBy(e => e.GetCount())
    : search.ToList().AsQueryable<activity>().OrderByDescending(e => e.GetCount());

OrderBy turns an IEnumerable (like List) into an IOrderedEnumerable, but turns an IQueryable into an IOrderedQueryable.

Upvotes: 4

Related Questions