C# LINQ to Entities不能识别该方法

3

我正在尝试编写一个按列名排序的函数。

在第二种情况 case = "Count" 中,我遇到了问题。我该如何将 IQueryable 转换为 IOrderedQueryable。

谢谢。

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

为什么要使用IOrderedQueryable?它和IEnumerable或IQueryable不是一样的吗? - lante
1个回答

4

OrderBy之前调用AsQueryable

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

OrderBy将一个IEnumerable(例如List)转换为IOrderedEnumerable,但将一个IQueryable转换为IOrderedQueryable


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接