2010-01-09 77 views
4

我想要做这样的事情变换LINQ的IQueryable为分页IQueryable的使用LINQ to NHibernate的

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

所以,你可以把任何 IQuerable声明和“变为了分页”,否则将被寻呼。

我正在使用LINQ to NHibernate。 我希望你得到它,对这个不好的英语sry:0

编辑:也许我的做法是错误的,是吗?

回答

12

这是从工作代码复制:

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

sry这不是我想要的。我想创建一个IQuerable对象。这个对象应该被传递给方法GetAllPaged(IQuerable queryThatShallbePaged,int pageSize,int startIndex) – Rookian 2010-01-10 11:29:30

+0

重命名变量名称,你有你说的。 – Paco 2010-01-10 13:22:55

+0

由于Linq扩展方法,客户端使用您的解决方案并且客户端没有将查询放入方法中。我想为我的存储库提供解决方案。但是,您的解决方案有效,但这不完全是我想要的。我不想要这个... IQueryable.Paged(页面,大小)我想这...页面(查询,页面,大小)。但我不确定哪种解决方案更好。 – Rookian 2010-01-10 16:07:13

0
return query.skip(startIndex).take(pageSize); 
+0

的问题是,我使用的LINQ to NHibernate和的getSession()LINQ的()是类型的IQueryable/IQueryable的的所以这不利于我 – Rookian 2010-01-09 21:38:12

相关问题