Зачем пропустить и принимать не работать при прохождении через метод?

StackOverflow https://stackoverflow.com/questions/3949823

Вопрос

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

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-nibernate, и эти методы используются для пейджинга. Спасибо.

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top