我正在尝试将Linq返回的对象分配给具有相同类的新对象,例如:
object x = (object) y
实际代码示例:
public void update(Person person){
//Persons is observable collection
Person found = Persons.FirstOrDefault(x => x.Id == person.Id);
found = person; //Persons not changing
}
Person newPerson = new Person(1, "Andy");
update(newPerson);
我尝试过克隆:
public void update(Person person){
//Persons is observable collection
Person found = Persons.FirstOrDefault(x => x.Id == person.Id);
found = person.Clone(); // CLONING but Persons STILL NOT changing
}
Person newPerson = new Person(1, "Andy");
update(newPerson);
Persons observablecollection变量保持不变。我看不出代码有什么问题,有什么建议吗?
编辑:对不起早先的错误语法。
答案 0 :(得分:2)
如果您尝试替换 Person
中的ObservableCollection<Person>
对象,请尝试以下操作:
Person found = Persons.FirstOrDefault(x => x.Id == person.Id);
if(found != null)
{
int index = Persons.IndexOf(found);
Persons[index] = person;
}
答案 1 :(得分:1)
呃,是的,呃。您没有更改其引用或更新其中的值。Persons observablecollection变量保持不变。
Person found = Persons.FirstOrDefault(x => x.Id == person.Id);
found = person; //not changing
您将found
的引用设置为 person
的引用。所以person
不会改变。
说我做了这样的事情:
void ModifyString(string input)
{
string newValue = Database.GetNewValue();
newValue = input;
}
无论我传入什么内容,input
永远不会改变, in 方法或 outside 方法(用作参数的实例)。
你确定你没有倒退任务吗?