Почему 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, и эти методы используются для подкачки страниц. Благодарю.
1 ответ
Решение
Почему бы не использовать IQueryable для метода MakeQuery()?
IQueryable<MyClass> MakeQuery()
{
return session.Linq<MyClass>();
}
Не то чтобы реальный запрос имел большой смысл. Но я оставлю это тебе.
Но это также единственная разница между m1() и m2()