代码之家  ›  专栏  ›  技术社区  ›  Afshar Mohebi

为什么在传递方法时Skip和Take不起作用?

  •  0
  • Afshar Mohebi  · 技术社区  · 14 年前

    假设以下代码:

    IEnumerable<MyClass> MakeQuery()
    {
      var query = from m in session.Linq<MyClass>()
                  select m;
      return query;
    }
    
    List<MyClass> m1()
    {
      return MakeQuery()
        .Skip(10)
        .Take(20)
        .ToList<MyClass>();
    }
    
    List<MyClass> m2()
    {
      var query = from m in session.Linq<MyClass>()
                  select m;
    
      return query
        .Skip(10)
        .Take(20)
        .ToList<MyClass>();
    }
    

    假设所有查询都相同,则 m1() , Skip Take 不起作用。事实上,它们并非全部存在。

    我使用linq来nhibernate,这个方法用于分页。谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Claus Jørgensen    14 年前

    为什么不为MakeQuery()方法使用IQueryable?

    IQueryable<MyClass> MakeQuery()
    {
      return session.Linq<MyClass>();
    }
    

    但这也是m1()和m2()之间的唯一区别

    推荐文章