将嵌套的 'foreach' 和 'If' 重构为 LINQ

Refactor nested 'foreach' and 'If' to LINQ

我正在学习一些 LINQ。当遇到这样的事情时:

foreach (var user in result.Items)
{
    if (!(user.UserId.Equals(session.UserId)))
    {
        user.CanBeDeleted = true;
    }
}

如何使用 LINQ 解决? LINQ 还是 foreach-if 组合性能更好?

在大多数情况下,LINQ 不会使您的程序 运行 更快,但它会使您的代码更具可读性,因此更易于维护。

但是如果您需要修改某些内容,LINQ 并不是合适的工具。 Q 代表查询。使用普通循环对其进行修改。但是你可以过滤你要修改的内容:

var toBeDeleted =  result.Items.Where(u => u.UserId != session.UserId);

现在您可以使用循环来执行它并更改 User:

foreach(User user in toBeDeleted)
    user.CanBeDeleted = true;
result.Items.Where(user => 
    !user.UserId.Equals(session.UserId)).ToList()
    .ForEach(user => user.CanBeDeleted = true);