C# 静态列表上的Linq过滤

C# 静态列表上的Linq过滤,c#,linq,static,C#,Linq,Static,由于各种原因,我有一个静态枚举-我发现过滤对它不起作用-这是正确的行为吗 private static IEnumerable<Perms> Perms; private IEnumerable<Perms> GetAll() { if (Perms == null || Perms.Count() == 0) { Perms = _repo.GetAllPerms(); } return Perm

由于各种原因,我有一个静态枚举-我发现过滤对它不起作用-这是正确的行为吗

private static IEnumerable<Perms> Perms;
private IEnumerable<Perms> GetAll()
{
     if (Perms == null || Perms.Count() == 0)
        {
            Perms = _repo.GetAllPerms();
        }
    return Perms;
}

public IEnumerable<Perms> HasAccess(IEnumerable<string> roles)
{
    var allperms = GetAll().ToList();
    return allperms.Where(p => p.RoleName == "CEO");
}
私有静态IEnumerable perm;
私有IEnumerable GetAll()
{
if(Perms==null | | Perms.Count()==0)
{
Perms=_repo.GetAllPerms();
}
回烫;
}
公共IEnumerable HasAccess(IEnumerable角色)
{
var allperms=GetAll().ToList();
返回allperms.Where(p=>p.RoleName==“CEO”);
}

--无论where子句如何,它总是返回原始列表。我需要一个ToList()来调用该方法。Linq是延迟执行。

HasAccess
不返回任何内容,您应该在
GetAll
中显示一些条件代码。还要确保
Perms
不是
null
。请向我们展示更多的代码一个-想法是Perms设置一次,然后不再设置-从内存加载,而不是每次执行repo调用时间-它不是空的-问题是为什么HasAccess中的所有perms总是返回完整列表,而不遵守Where子句可以显示使用“HasAccess”的代码?