Perché Skip e prendere non funziona quando si passa attraverso un metodo?
-
08-10-2019 - |
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.
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