2017-05-30 67 views
2

我有一個版本庫public List<someView> list; 是不可能像這樣得到一個linq項目,只是更新/替換整個對象,以便列表中的對象全局立即更新?列表中的C#更新對象

... 
var item = list.SingleOrDefault(m => m.Id== viewModel.Id); 
if (item != null) 
{ 
    item = viewModel; 
} 
... 
+1

您設置** **參考'item'到一個新的對象,而不是這個對象是'item'最初引用的。這是參考對象的工作方式。如果要替換列表中的項目,則需要刪除並重新添加 – Liam

+7

[如何以最佳方式替換列表項目](https://stackoverflow.com/questions/17188966/how-to -replace-list-item-in-best-way) – Liam

回答

5

沒有因爲item僅僅是一個局部變量,但您可以使用列表索引:

int index = list.FindIndex(m => m.Id == viewModel.Id); 
if(index >= 0) 
    list[index] = viewModel; 
+0

啊完美。這工作。謝謝 – stibay

+3

因此,3年後你是FGITW的重複問題。我敢打賭,你沒有睡3年,等待有人來欺騙這個問題! –

+0

實際上看起來在先前有關這個問題的屈辱,但他們在那裏如此複雜和很多隻更新單個屬性;) – stibay