将嵌套的 '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);
我正在学习一些 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);