c# - 在linq循环中获取以前的值?

标签 c# .net linq c#-4.0

我正在尝试将下面的代码转换为速记 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/

相关文章:

c# - Rx 如何从 pub/sub 模式创建序列

.net - 我可以在单元测试中使用.net线程振动器吗?

c# - 递归层次父子

c# - 在System.Linq.Dynamic.Select()中,如何简单的处理空对象引用?

c# - Linq:如何从集合中查询项目直到总和达到某个值

c# - C# 中的机器声音

c# - List<T> 所有行更新

c# - unsigned char ** 相当于 c# 中的值,并且必须将返回值写入文件中

c# - 公共(public)内部类

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