使用linq更新对象集合中的属性

Max*_*xim 5 c# linq

具有对象结构的对象列表如下

public class Schedule
{
    public int ID { get; set; }
    public string Name { get; set; }

    public Schedule() {}
}
Run Code Online (Sandbox Code Playgroud)

对数据执行linq查询我可以看到正确填充的对象列表

var schedule = (from d in data 
                select new Schedule
                {
                    ID = d.id,
                    Name = "" 
                }).ToList();
Run Code Online (Sandbox Code Playgroud)

稍后在代码中我想要更改属性名称取决于条件.我找到的几个例子

schedule.ForEach(s => { s.Name = "Condition Name"; });
schedule.Select(s => { s.Name = "Condition name"; return s; });
Run Code Online (Sandbox Code Playgroud)

执行后,当我在监视窗口中刷新计划时,请保留名称参数"null".有人能看出这有什么问题吗?

循环收集并尝试更改属性也不会改变它

   foreach (var sch in schedule)
   {
       sch.Name = "New name";
   }
Run Code Online (Sandbox Code Playgroud)

schedule.ToList()[0] .Name ==""

UPDATE

下面的代码段中的.ToList()调用对于使代码有效非常重要.

var schedule = (from d in data 
                select new Schedule
                {
                    ID = d.id,
                    Name = "" 
                }).ToList();
Run Code Online (Sandbox Code Playgroud)

Slu*_*art 3

该代码有效 - 执行schedule.ForEach()后,Name属性被更新。也许你遗漏了一些东西。