2009-06-08 15 views
0

Ich habe eine Sammlung von Roles.GetAllRoles() auf Membership Providers. Jetzt habe ich eine Rolle "System Administrator", die ich aus dieser Liste entfernen möchte, damit ich sie in meiner Liste verwenden kann. Wie mache ich das?So entfernen Sie einen Artikel in Roles.GetAllRoles()

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

Antwort

0

Wenn Sie wollten Sie LINQ verwenden könnte das Array in eine Liste zu konvertieren ...

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

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

Alle Ihre Datenbindung mit einem List<String>

UPDATE gut funktionieren wird:

ToList<T>() ist ein extension method, der Teil des .Net 3.5-Bundles ist. Sie müssen sicherstellen, dass Ihr Projekt auf diese Framework-Version abzielt, und Sie müssen sicherstellen, dass Ihr Projekt einen Verweis auf System.Core enthält.

Sobald Sie diese Referenz haben Sie eine Using Anweisung an den Anfang der Datei Code befindet sich auf hinzuzufügen:

using System.Linq; 

Wenn Sie diese all diese Dinge haben, dann sollten Sie ein paar beginnen, sehen neuer Erweiterungsmethoden werden in Intellisense angezeigt.

+0

Das ist seltsam. Ich bekomme die ToList() nicht nach Roles.GetAllRoles()?!?! – dcpartners

+0

@dewacorp: Datenbindung funktioniert mit Sammelschnittstellen, einschließlich IEnumnerable , nicht nur konkrete Sammlungstypen. – Richard

0

Roles.GetAllRoles() einen String Array zurückgibt, die Sie diesen Code filtern mit:

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

     AvailableRoles.DataSource = v; 
     AvailableRoles.DataBind(); 
2

Es ohne Zugabe von zusätzlichen Zeilen zu Ihrem Code erreicht werden.

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

Kommentar: nicht sicher, warum Sie versuchen müssen ... Fang hier. Aber was auch immer, diese Lösung sieht nett zu mir aus.

+0

Kann dies auch nicht: Roles.GetAllRoles(). Außer (new [] {"System Administrator"}); Keine Methoden für außer? !!? – dcpartners

+0

"using System.Linq". Ich dachte, das sei offensichtlich. Dies ist eine Erweiterungsmethode in "System.Core" dll. –

Verwandte Themen