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


417

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

Une fois que j'ai demandé le List<T>, comment puis-je ajouter mon initiale Item, ne faisant pas partie de la source de données, en tant que PREMIER élément 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;

Réponses:


719

Utilisez la méthode Insert :

ti.Insert(0, initialItem);

8
@BrianF, oui vous avez raison. Doc:This method is an O(n) operation, where n is Count.
23W

4
@ 23W Vous devriez probablement créer un lien vers la page en anglais si vous souhaitez créer un lien vers MSDN.
mbomb007

Serait-il possible d'insérer à la fin de la liste?
Gary Henshall

3
@GaryHenshall oui, utilisez la Addméthode, il insère à la fin.
Martin Asenov

2
Depuis .NET 4.7.1, vous pouvez utiliser Append()et Prepend(). Vérifiez cette réponse
aloisdg passe à codidact.com le

24

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

<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

-Oisine


2
C'est plutôt cool. L'OP n'a pas spécifié ASP.NET mais c'est une bonne astuce à savoir.
Matt Hamilton

5

Depuis .NET 4.7.1, vous pouvez utiliser les effets secondaires free Prepend()et Append(). La sortie va être un IEnumerable.

// Creating an array of numbers
var ti = new List<int> { 1, 2, 3 };

// Prepend and Append any value of the same type
var results = ti.Prepend(0).Append(4);

// output is 0, 1, 2, 3, 4
Console.WriteLine(string.Join(", ", results ));


3

Utilisez la méthode d' insertion de List<T>:

List.Insert, méthode (Int32, T): Insertsun élément dans la liste à la specified index.

var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.