我試圖簡化我的問題,這個例子中,列表中的項目:更新在不工作
List<User> userList = new List<User>()
{
new User {IdUser = 1, Login = "Frank" },
new User {IdUser = 2, Login = "Pat" },
new User {IdUser = 3, Login = "Max" },
new User {IdUser = 4, Login = "Paul" },
new User {IdUser = 5, Login = "John" }
};
User newUser = new User()
{
IdUser = 3,
Login = "Chris"
};
var userToUpdate = userList.FirstOrDefault(r => r.IdUser == 3);
userToUpdate = newUser;
爲什麼userList
不包含該程序的結束時的值Login = "Chris"
?如何更新列表中的項目?
PS1:我不想更新Login
價值,我想更新用戶對象
PS2:它說,在這個link該FirstOrDefault選擇一個集合中的項目,但不「解鎖「或」克隆「它。即它是同一個實例。 所以,如果你修改一個屬性,你修改了原始實例。
我很困惑!
'userToUpdate'是一個局部變量。用新用戶替換分配的用戶。所以變量變化,但不是與該變量無關的列表。如果你想修改列表使用:'int ix = userList.FindIndex(u => u.IdUser == 3); if(ix> = 0)userList [ix] = newUser;' –