Как удалить один из элементов в Roles.GetAllRoles () - PullRequest
0 голосов
/ 08 июня 2009

У меня есть коллекция Roles.GetAllRoles () для провайдеров членства. Теперь у меня есть одна роль «Системный администратор», которую я хотел бы удалить из этого списка, чтобы я мог использовать ее в своем списке. Как мне это сделать?

public void AssignUserToRoles_Activate(object sender, EventArgs e)
        {
            try
            {
                AvailableRoles.DataSource = Roles.GetAllRoles();
                AvailableRoles.DataBind();
            }
            catch (Exception err)
            {
                //
            }
        }

Ответы [ 3 ]

2 голосов
/ 08 июня 2009

Это может быть достигнуто без добавления каких-либо дополнительных строк в ваш код.

public void AssignUserToRoles_Activate(object sender, EventArgs e)
        {
            try
            {
                AvailableRoles.DataSource = Roles.GetAllRoles().Except(new [] {"System Administrator"});
                AvailableRoles.DataBind();
            }
            catch (Exception err)
            {
                //
            }
        }

Комментарий: не уверен, зачем тебе пытаться ... лови здесь. Но как бы то ни было, это решение выглядит мне опрятно.

0 голосов
/ 08 июня 2009

Roles.GetAllRoles () возвращает строковый массив , который можно отфильтровать с помощью этого кода:

        string[] roles = Roles.GetAllRoles();
        var v = from role in roles
                where role != "System Administrator"
                select role;

        AvailableRoles.DataSource = v;
        AvailableRoles.DataBind();
0 голосов
/ 08 июня 2009

Если вы хотите, вы можете использовать LINQ для преобразования массива в список ...

var roles = Roles.GetAllRoles().ToList();
roles.Remove("Administrator"); //Yank out the admin role...

AvailableRoles.DataSource = roles;
AvailableRoles.DataBind();

Все ваши привязки данных будут отлично работать с List<String>

UPDATE:

ToList<T>() - это метод расширения , который входит в комплект .Net 3.5. Вы должны убедиться, что ваш проект ориентирован на эту версию платформы, и вы должны убедиться, что ваш проект имеет ссылку на System.Core.

Получив эту ссылку, вам нужно добавить оператор Using вверху файла, в котором расположен ваш код:

using System.Linq;

Если у вас есть все эти вещи, то вы должны увидеть кучу новых методов расширения, отображаемых в intellisense.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...