c# – 检查列表中是否存在值 – 比循环更好吗?
发布时间:2020-12-16 00:07:27 所属栏目:百科 来源:网络整理
导读:我有以下类数据结构: public class clsUser{ public string userid { get; set; } public ListOrgPermission orgs { get; set; }}public class OrgPermission{ public string Org { get; set; } public string SubOrg {get;set;} public Liststring type {
我有以下类数据结构:
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; } } 列表与LT;串GT; type可以包含诸如“admin”,“user”,“superuser”等值. 因此每个用户可以拥有多个org-suborg组合,每个组合具有多个用户角色. 用户类中的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")); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |