簡體   English   中英

C#:有沒有辦法使用lambda表達式設置集合中對象的屬性?

[英]C#: is there a way to set a property of objects in a collection using lambda expression?

我正在開發一個小項目,我想我可以嘗試一些我不知道的東西,這樣我就可以學到新東西。 我有一組消息,叫做msgs。 我想只過濾未讀的,然后將其設置為“讀取”。 為此,我用這個lambda表達式調用了Where方法,我想我會得到一個未讀的所有消息的列表。 現在我想將值設置為“Read”(將“T”指定給MessageRead屬性)。 有沒有辦法使用lambda表達式?

我得到了這個代碼,但是“All”方法不是我所要求的,我只是發現它檢查列表中的所有元素是否符合這個條件。

msgs.Where(message => message.MessageRead == 'F').All(message => message.MessageRead = 'T');

非常感謝,奧斯卡

你所追求的是一個ForEach擴展方法,請參見這里的討論: LINQ相當於foreach for IEnumerable <T>

事實上,如果有這樣一種方法,它就不會比常規的foreach聲明有任何好處。

Eric Lippert(微軟高級軟件設計工程師)對這個主題有一個很好的概述: “foreach”vs“ForEach”

foreach聲明有什么問題? 它完全符合您的需求:

foreach (var msg in msgs.Where(m => m.MessageRead == 'F'))
{
    msg.MessageRead = 'T';
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM