Почему Skip and Take не работает при прохождении через метод? - PullRequest
0 голосов
/ 16 октября 2010

Предположим, следующие коды:

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 Ответ

2 голосов
/ 16 октября 2010

Почему бы не использовать IQueryable для метода MakeQuery ()?

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

Не то чтобы реальный запрос имел большой смысл. Но я оставлю это тебе.

Но это также единственная разница между m1 () и m2 ()

...