假设以下代码:

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(), SkipTake 不起作用。的确,就像它们并不存在一样。

为什么会发生这种情况以及如何修复?

我正在使用linq-to-nhibrenate,此方法用于分页。谢谢。

有帮助吗?

解决方案

为什么不将iQueryable用于manvquery()方法?

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

并不是说实际查询很有意义。但是我会把它留给你。

但这也是M1()和M2()之间的唯一区别

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top