这不是'一个问题'的问题,而是'为什么会发生这样的问题'的问题。
var chapters = story.Chapters.Select(
ch => new ChapterDisplayViewModel {
Id = ch.Id,
Number = ch.Number});
首先我想获取一些数据。故事是一个类型为Story
的实体,它与Chapter
有一对多的关系。我想改变我得到的章节集合中的一些数据,所以我编写了一些条件,如果满足条件,则改变值。
if(chapters.Any(c => c.Number == chapterNum))
chapters.Where(c => c.Number == chapterNum).Single().IsSelected = true;
然后我将数据发送到视图,但问题是:
由于惰性加载,没有任何更改,即使在将数据发送到视图后也没有触发我所做的更改,为什么?我做了一个赋值语句,不应该将数据传递给视图触发它吗?
解决方案当然是使用ToList立即执行查询。
var chapters = story.Chapters.Select(
ch => new ChapterDisplayViewModel {
Id = ch.Id,
Number = ch.Number}).ToList();
我只想解释这个行为。