Пожалуйста, объясните это поведение - PullRequest
0 голосов
/ 19 июня 2011

У меня есть функция, которая выглядит так:

IEnumerable<News> articles = _repository.GetLatestNews();

foreach (News news in articles) {
    news.IsFetched = true;
    _repository.Save();
}
return Json(articles, JsonRequestBehavior.AllowGet);

, которая не возвращает никаких данных json (и я уверен, что должен быть какой-то вывод, потому что я могу отлаживать внутри цикла foreach)

Когда я изменяю код на следующее:

IEnumerable<News> articles = _repository.GetLatestNews();
var jsonArticles = articles.ToList();

foreach (News news in articles) {
    news.IsFetched = true;
}
_repository.Save();

return Json(jsonArticles, JsonRequestBehavior.AllowGet);

Я получаю желаемый результат.

Теперь мне интересно, почему это происходит?В чем причина такого поведения?

1 Ответ

1 голос
/ 20 июня 2011

Вот эта строка:

var jsonArticles = articles.ToList();

, который фактически заставляет запрос выполнять и охотно извлекать данные. Результат не будет возвращен, пока вы не начнете перечислять перечислимое, возвращенное методом GetLatestNews.

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