改變字段的值我有follwing對象C#的LINQ to Objects查詢基於列表
objItem (id,name,qty) - list<items>
objSel(selId) - list<int>
objSel.selId是objItem的選擇項ID。
如何編寫LINQ查詢將項目數量更改爲0如果未選擇項目並返回objItem。
改變字段的值我有follwing對象C#的LINQ to Objects查詢基於列表
objItem (id,name,qty) - list<items>
objSel(selId) - list<int>
objSel.selId是objItem的選擇項ID。
如何編寫LINQ查詢將項目數量更改爲0如果未選擇項目並返回objItem。
你的僞代碼是相當混亂,但我懷疑你想是這樣的:更有效地
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來改變數據,但這樣做是一個壞主意。線索在「查詢」一詞中 - 這是關於提問的。你對這個問題的回答是另一回事。
Jon,我認爲我們可以使用LINQ來過濾和更改字段值。如果這是做到這一點的最佳方式,我會繼續這樣做。謝謝。 – Wilz
@Wilz:你*可以*,但這不是它的設計目的 - 基本上你必須與LINQ做鬥爭。現在,如果您要重新設計,以便您不改變現有對象,而是基於現有對象和某些條件創建新對象,那麼這是另一回事。 –
我已經寫了一個答案,但如果它不是你要找的東西,請澄清更多的問題。理想情況下,顯示真實的代碼而不是僞代碼。 –
Jon,我認爲我們可以使用LINQ來過濾和更改字段值。如果這是做到這一點的最佳方式,我會繼續這樣做。謝謝。 – Wilz