web-dev-qa-db-fra.com

Comment ajouter un élément au début de la liste <T>?

Je souhaite ajouter une option "Select One" à une liste déroulante liée à un List<T>.

Une fois que je demande le List<T>, comment puis-je ajouter mon Item initial, ne faisant pas partie de la source de données, comme le PREMIER élément de ce List<T>? J'ai:

// populate ti from data               
List<MyTypeItem> ti = MyTypeItem.GetTypeItems();    
//create initial entry    
MyTypeItem initialItem = new MyTypeItem();    
initialItem.TypeItem = "Select One";    
initialItem.TypeItemID = 0;
ti.Add(initialItem)  <!-- want this at the TOP!    
// then     
DropDownList1.DataSource = ti;
365
Ash Machine

Utilisez la méthode Insert :

ti.Insert(0, initialItem);
639
Matt Hamilton

Mise à jour: une meilleure idée, définissez la propriété "AppendDataBoundItems" sur true, puis déclarez le "Choisir élément" de manière déclarative. L'opération de liaison de données s'ajoute à l'élément déclaré de manière statique.

<asp:DropDownList ID="ddl" runat="server" AppendDataBoundItems="true">
    <asp:ListItem Value="0" Text="Please choose..."></asp:ListItem>
</asp:DropDownList>

http://msdn.Microsoft.com/en-us/library/system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx

-Oisin

23
x0n

Utilisez List<T>.Insert

Bien que cela ne concerne pas votre exemple spécifique, si les performances sont importantes, envisagez également d'utiliser LinkedList<T> car l'insertion d'un élément au début d'un List<T> nécessite le déplacement de tous les éléments. Voir Quand devrais-je utiliser une liste par rapport à une liste liée .

2
sonny

Utilisez la méthode Insert de List<T>:

Méthode List.Insert (Int32, T): Inserts un élément de la liste au specified index.

var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element
1
Sina Lotfi