У меня есть следующие структуры данных: КлассПроверьте, существует ли значение в списке - лучше, чем цикл?
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
может иметь значения, такие как «администратор», «пользователь», «суперпользователя» и т.д.
, так что каждый пользователь может иметь несколько орг-suborg комбинации с несколькими пользовательскими ролями для каждого.
Orgs и suborgs в пользовательском классе могут быть записаны следующим образом: 56% (что означает, что они могут видеть все, что начинается с 56)
Я хочу, чтобы проверить, если пользователь имеет доступ к орг-suborg комбинации на странице типа «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
}
}
есть лучший способ сделать это, чтобы избавиться от петли может быть ? или я делаю это правильно?
Это не избавляет от цикла, он просто скрывает его внутри «Любые (...)», предоставил его лучше, чем оригинал. –
@StenPetrov: Конечно, но я подозреваю, что это то, что фактически ищет OP для. Учитывая, что есть много вещей, чтобы посмотреть, я не вижу, как вы могли бы ожидать, что когда-либо избавитесь от цикла. –
Что делает OP, выглядит неправильно на многих уровнях, поэтому вы, скорее всего, правы. +1 –