Kin*_*tor 9 .net c# linq linq-to-objects
假设我有一组消息,其中包含"UserID"(int)和"Unread"(bool)属性.
对于UserID = 5的集合中的任何Message,如何使用LINQ扩展方法设置Unread = false?
所以,我知道我可以这样做:
messages.Any(m => m.UserID == 5);
Run Code Online (Sandbox Code Playgroud)
但是,如何使用扩展方法设置每个的Unread属性呢?
注意:我知道我不应该在生产代码中这样做.我只是想学习更多LINQ-fu.
实际上,这可以仅使用内置的LINQ扩展方法而不使用ToList
.
我相信这将与常规for
循环非常相似.(我还没检查过)
你不敢在实际代码中这样做.
messages.Where(m => m.UserID == 5)
.Aggregate(0, (m, r) => { m.Unread = false; return r + 1; });
Run Code Online (Sandbox Code Playgroud)
作为额外的奖励,这将返回其修改的用户数量.
messages.Where(m => m.UserID == 5).ToList().ForEach(m => m.Unread = false);
然后提交更改.