Pregunta

Supongamos siguientes códigos:

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>();
}

Suponiendo que todas las consultas son iguales, parece que en m1(), Skip y Take no funciona. De hecho es como que no existen todos.

¿Por qué sucede esto y cómo se puede solucionar?

estoy usando linq-to-nhibernate y estos métodos se usan para paginación. Gracias.

¿Fue útil?

Solución

¿Por qué no usar IQueryable para el método MakeQuery ()?

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

No es que la consulta real tiene mucho sentido. Pero yo lo dejo a ti.

Pero esta es también la única diferencia entre M1 () y M2 ()

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top