3

列名でソートする関数を作成しようとしています

2番目のケース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());
    }
4

1 に答える 1

4

AsQueryable前に電話してOrderByください:

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

OrderByIEnumerable(のようなList) を に変換しますがIOrderedEnumerableIQueryableを に変換しIOrderedQueryableます。

于 2012-12-06T20:20:35.330 に答える