重构嵌套' foreach'和'如果'到LINQ

时间:2015-01-22 15:38:06

标签: c# linq

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

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

如何使用LINQ解决问题? LINQ或foreach-if组合表现更好吗?

2 个答案:

答案 0 :(得分:4)

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

但是如果你需要修改LINQ不是正确的工具。 Q代表查询。使用普通循环来修改它。但您可以过滤必须修改的内容:

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

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

foreach(User user in toBeDeleted)
    user.CanBeDeleted = true;

答案 1 :(得分:0)

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