Take () работает только с цепочкой? - PullRequest
1 голос
/ 17 августа 2011

У меня есть сервисная функция для запроса базы данных SQL, например:

public IQueryable<MyModel> getAll()
{
    IQueryable<MyModel> models = (from f in db.MyModel select f);

    return models;
}

Когда я внедряю ее в свой контроллер, она работает, когда я соединяю Take ():

var models = myModelEntities.getAll().Take(5); 
return View(models); // returns 5 rows to the view

Но так не происходит:

var models = myModelEntities.getAll();
models.Take(5); 
return View(models); // returns thousands of rows to the view

Почему Take () игнорируется, если он не связан?На моей модели включена отложенная загрузка ...

Ответы [ 3 ]

2 голосов
/ 17 августа 2011

Это работает , но вы никому не назначаете результат Take(). Take() не изменяет переменную models, возвращает 5 лучших элементов перечислимого.

Следующие будут работать:

var models = myModelEntities.getAll();
models = models.Take(5); 
return View(models); // returns five rows to the view
2 голосов
/ 17 августа 2011

Это потому, что Take не мутирует текущий IEnumerable; он возвращает новый. Это будет работать:

models = models.Take(5);
1 голос
/ 17 августа 2011

Вы не назначаете результат второго вызова Take () какой-либо переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...