为什么Skip and Take在通过方法时不起作用?

假设以下代码:
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-to-nhibernate,这个方法用于分页。谢谢。     
已邀请:
为什么不将IQueryable用于MakeQuery()方法?
IQueryable<MyClass> MakeQuery()
{
  return session.Linq<MyClass>();
}
并不是说实际的查询很有意义。但是我会把它留给你。 但这也是m1()和m2()之间的唯一区别     

要回复问题请先登录注册