我正在尝试将下面的代码转换为速记 linq,但不确定是否可行。使用 Linq 有更优雅的方法吗?出现的复杂情况是它是一个嵌套循环,用于拆分 AllowedRoles 并检查每个角色是否为 IsUserInRole。
bool allowed = RoleManager.IsUserUnrestricted(userId);
if (!allowed)
{
foreach (var item in element.AllowedRoles.Split(','))
{
if (roleManager.IsUserInRole(userId, item.Trim()))
{
allowed = true;
break;
}
}
}
if (allowed)
{
AddWidget(element.Name);
}
最佳答案
试试这个:
if (RoleManager.IsUserUnrestricted(userId)
|| element.AllowedRoles.Split(',')
.Any(item => roleManager.IsUserInRole(userId, item.Trim()))) {
...
}
想法是使用 LINQ 的 Any
函数在没有循环的情况下找到第一个匹配项。
关于c# - 在linq循环中获取以前的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822348/