2015-05-29 36 views
0

我有以下列表和類:查找列表中的一個對象,並取代其價值

List<MyClass> MyList 

public class MyClass 
{ 
    public int id { get; set; } 
    public bool checked { get; set; } 
} 

我也有兩個變量:

int idToFind = 1234; 
bool newcheckedvalue = true; 

我需要做的是搜索什麼列表並找到MyClass對象,其ID等於該值idToFind。一旦我在列表中有對象,然後我想要將該類中選中屬性的值更改爲newcheckedvalue值的值。

LINQ似乎是解決這個問題的方法,我只是無法得到正確的表達式。我可以在單個LINQ表達式中執行此操作嗎?

+0

如果'id's是跨實例獨特你可以將它們放在一個'字典'代替那麼這將是作爲'MyDictionary [idToFind] .checked = newcheckedvalue一樣簡單;'。 – juharr

回答

4

LINQ是用於查詢集,不進行修改。你可以找到喜歡的對象:

var item = MyList.FirstOrDefault(r=> r.id == idtoFind && r.checked == newcheckedvalue); 

基礎上找到了ID唯一可以做的項目:

var item = MyList.FirstOrDefault(r=> r.id == idtoFind); 

稍後,您可以設置/修改其屬性。

//Make sure to check against Null, as if item is not found FirstOrDefault will return null 
item.checked = newcheckedvalue; //or any other value 
+0

'!= newcheckedvalue',當然?然後'item.checked = newcheckedvalue'。 –

+0

當然像往常一樣,您可能需要處理默認(空)的情況。但是,'首先或者默認'是要走的路。 – ryanyuyu

+0

@CharlesMager,你讓我想到了,我想OP只想根據'id'找到記錄。 – Habib

2

實施例(應注意的是MyClass類型必須是一個類,引用類型,在這個例子中):

var found = MyList.Where(ml=>ml.Id == 1234); 
foreach(var f in found) 
    f.checked = newcheckedvalue; 
相關問題