Domanda

Supponiamo seguenti codici:

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

Supponendo che tutte le query sono gli stessi, sembra che in m1(), Skip e Take non funziona. In effetti la sua, come non esistono affatto.

Perchè questo accade e come può essere risolto?

Sto usando LINQ to NHibernate e questo metodi sono utilizzati per il paging. Grazie.

È stato utile?

Soluzione

Perché non usare IQueryable per il metodo MakeQuery ()?

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

Non è che la query effettiva fa un sacco di senso. Ma lascio che a voi.

Ma questo è anche l'unica differenza tra M1 () e m2 ()

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top