我可以帮您翻译成中文。以下是需要翻译的内容:
我有以下类数据结构:
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”等值。
因此,每个用户可以具有多个组织-子组合,并具有每个用户角色的多个角色。
用户类中的组织和子组织可以写成这样:56%(这意味着他们可以查看以56开头的所有内容)
我想检查用户是否可以访问类型为“Admin”的页面上的组织-子组合
现在我正在使用循环进行操作,这很有效,就像这样:
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
}
}
有没有更好的方法来消除循环呢?或者我现在的做法是正确的吗?
StartsWith
不太合适 - 可能将其预解析为单独的字段更合适,代码冗长(考虑使用buttonSubmit.Enabled = (user.type.Contains("Admin"))
)。 - Sten Petrov