LINQ返回的对象不能与具有相同类的对象一起分配

时间:2017-09-28 17:23:07

标签: c# wpf linq oop

我正在尝试将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变量保持不变。我看不出代码有什么问题,有什么建议吗?

编辑:对不起早先的错误语法。

2 个答案:

答案 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 方法(用作参数的实例)。

你确定你没有倒退任务吗?