Преобразование LINQ IQueryable в выгружаемый IQueryable с использованием LINQ для NHibernate - PullRequest
5 голосов
/ 10 января 2010

Я хочу сделать что-то подобное

    public IQueryable GetPaged<TSource>(IQueryable<TSource> query, int startIndex, int pageSize)
    {
        return GetSession()
          .Linq<TSource>()
          .UseQuery(query)
          .Take(pageSize)
          .Skip(startIndex);
    }

Таким образом, вы можете поместить любой оператор IQuerable и «он становится выгружаемым», или он будет выгружен.

Я использую LINQ для NHibernate. Я надеюсь, что вы поняли, простите за этот плохой английский: o

edit: Может быть, мой подход неправильный, не так ли?

Ответы [ 2 ]

14 голосов
/ 10 января 2010

Это скопировано из рабочего кода:

public static class QueryableExtensions
{   
    public static IQueryable<T> Paged<T>(this IQueryable<T> source, int page,
                                                                    int pageSize)
    {
        return source
          .Skip((page - 1) * pageSize)
          .Take(pageSize);
    }
}
0 голосов
/ 10 января 2010
return query.skip(startIndex).take(pageSize);
...