我有以下类数据结构:
public class clsUser
{
public string userid { get; set; }
public List<OrgPermission> orgs { get; set; }
}
public class OrgPermission
{
public string Org { get; set; }
public string SubOrg {get;set;}
public List<string> type { get; set; }
}
List<string> type
可以有诸如“admin”、“user”、“superuser”等值。
因此每个用户都可以有多个组织-子组织组合,每个组合都有多个用户角色。
用户类中的orgs和suborgs可以这样写:56%(这意味着他们可以看到以56开头的所有内容)
我想检查用户是否有权访问类型为“Admin”的页面上的 org-suborg 组合
现在我正在用一个循环来做这件事,它是这样工作的:
foreach (OrgPermission userOrg in user.orgs) {
if ((ddlOrg.SelectedValue.StartsWith(userOrg.Org.Trim('%'))) && (ddlSubOrg.SelectedValue.StartsWith(userOrg.SubOrg.Trim('%')))) {
if (userOrg.type.Contains("Admin"))
btnSubmitToProd.Enabled = true;
else
btnSubmitToProd.Enabled = false;
break; //break out of the loop if the org-sub org match is found
}
}
是否有更好的方法来摆脱循环?还是我做得对?
最佳答案
这听起来像你想要的:
string orgValue = ddlOrg.SelectedValue;
string subOrgValue = ddlSubOrg.SelectedValue;
btnSubmitToProd = user.orgs
.Any(org => orgValue.StartsWith(org.Org.Trim('%')) &&
subOrgValue.StartsWith(org.SubOrg.Trim('%')) &&
org.type.Contains("Admin"));
关于c# - 检查列表中是否存在值 - 比循环更好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16017860/