这是我定义的枚举值
public enum authaccess
{ read=0,create=1,update=2,delete=4}
访问表如下所示。
|id | tablename |columnname|permitted|
|----|-----------|----------|---------|
|1 | cms |header |3 |
|2 | cms |footer |2 |
|3 | cms |content |7 |
允许对所有内容进行读访问,而3表示(创建+更新),7表示所有权限。
因为我需要在div中启用(x)按钮,其中loggedInUser具有删除权限
使用Linq,我用过
new DbContext().tbl_access.where(k=>k.permitted > authaccess.delete){divid.class.add('close')}
但无法找到获取用户可以更改的内容列表的方法,即3或(authaccess.create + authaccess.update)
[编辑澄清]结果表应该是
|id | tablename |columnname|permitted|
|----|-----------|----------|---------|
|1 | cms |header |3 |
|2 | cms |footer |2 |
因为(页眉和页脚)包括小于或等于3的创建+更新级别访问。
在此先感谢您的帮助。
看起来你的authaccess
具有位屏蔽的值。对于您请求的create + update,编写Linq的可能方法是:
new DbContext().tbl_access
.Where(k => (k.permitted & (int)authaccess.create) > 0) &&
(k.permitted & (int)authaccess.update) > 0))
你想要那样的东西吗?
var authAccessFilter = (int)authaccess.create + (int)authaccess.update;
var records = new DbContext().tbl_access.Where(k => k.permitted <= authAccessFilter).ToList();