请解释一下这种行为
我有一个像这样的函数:
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);
我得到了所需的输出。
现在我很好奇,为什么会发生这种情况?这种行为的原因是什么?
I have a function that goes like this:
IEnumerable<News> articles = _repository.GetLatestNews();
foreach (News news in articles) {
news.IsFetched = true;
_repository.Save();
}
return Json(articles, JsonRequestBehavior.AllowGet);
Which does not return any json data (and I'm sure there should be some output, because I can debug inside the foreach loop).
When I change the code to the following:
IEnumerable<News> articles = _repository.GetLatestNews();
var jsonArticles = articles.ToList();
foreach (News news in articles) {
news.IsFetched = true;
}
_repository.Save();
return Json(jsonArticles, JsonRequestBehavior.AllowGet);
I get the desired output.
Now I'm curious, why does this happen? What's the reason for this behavior?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
正是这一行:
实际上强制执行查询并急切地获取数据。在您开始枚举
GetLatestNews
方法返回的可枚举值之前,不会返回任何结果。It is this line:
that actually forces the query to execute and eagerly fetch the data. There won't be any result returned until you start enumerate the enumerable returned by the
GetLatestNews
method.