2014-04-11 70 views
0

改變字段的值我有follwing對象C#的LINQ to Objects查詢基於列表

objItem (id,name,qty) - list<items> 
objSel(selId)  - list<int> 

objSel.selId是objItem的選擇項ID。

如何編寫LINQ查詢將項目數量更改爲0如果未選擇項目並返回objItem。

+0

我已經寫了一個答案,但如果它不是你要找的東西,請澄清更多的問題。理想情況下,顯示真實的代碼而不是僞代碼。 –

+0

Jon,我認爲我們可以使用LINQ來過濾和更改字段值。如果這是做到這一點的最佳方式,我會繼續這樣做。謝謝。 – Wilz

回答

1

你的僞代碼是相當混亂,但我懷疑想是這樣的:更有效地

List<Item> items = ...; 
List<int> selectedIds = ...; 

foreach (var item in items.Where(x => !selectedIds.Contains(x.Id))) 
{ 
    item.Quantity = 0; // Property name adjusted for readability and convention 
} 

對於使用HashSet<int>選定ID替代。

請注意,它不是執行更改的LINQ 查詢 - 查詢只是給出需要更改的項目。雖然你可以濫用LINQ來改變數據,但這樣做是一個壞主意。線索在「查詢」一詞中 - 這是關於提問的。你對這個問題的回答是另一回事。

+0

Jon,我認爲我們可以使用LINQ來過濾和更改字段值。如果這是做到這一點的最佳方式,我會繼續這樣做。謝謝。 – Wilz

+1

@Wilz:你*可以*,但這不是它的設計目的 - 基本上你必須與LINQ做鬥爭。現在,如果您要重新設計,以便您不改變現有對象,而是基於現有對象和某些條件創建新對象,那麼這是另一回事。 –