我使用以下代码返回详细的文件夹权限

return (from permissionName in Enum.GetNames(typeof(FileSystemRights))
let val =
Convert.ToInt32(
Enum.Parse(typeof(FileSystemRights), permissionName), CultureInfo.InvariantCulture)
where
(val != 0x1f01ff) && (val != 0x301bf) && (val != 0x20089) && (val != 0x200a9) && (val != 0x116)
where ((int)this.FileSystemRule.FileSystemRights & val) > 0
select permissionName).ToList();我怎样才能得到简短的版本,即:

换句话说,我只想返回
发布于 2013-09-03 15:40:13
只要列出所需的权限,您就可以简化您的逻辑。例如:
private readonly FileSystemRights[] namesIWant = new FileSystemRights[]
{
FileSystemRights.FullControl,
FileSystemRights.Modify,
FileSystemRights.ReadAndExecute,
FileSystemRights.ListDirectory,
FileSystemRights.Read,
FileSystemRights.Write
};然后,LINQ表达式变成:
return (from perm in namesIWant
where (this.FileSystemRule.FileSystemRights & perm) != 0
select perm.ToString()).ToList();发布于 2013-09-06 07:38:28
我想和您分享这一点,为了使它对我有效,我不得不将> singe更改为== @Jim的代码修改为:
return (from perm in namesIWant
where (this.FileSystemRule.FileSystemRights & perm) == perm
select perm.ToString()).ToList();另外,从FileSystemRights.ListDirectory,中删除NamesIWant,因为它包括Read和ReadData,如果保留它,就会有重复的值。
https://stackoverflow.com/questions/18587581
复制相似问题