Come aggiungere un elemento all'inizio dell'elenco <T>?


417

Voglio aggiungere un'opzione "Seleziona uno" a un elenco a discesa associato a List<T>.

Dopo aver eseguito una query per List<T>, come posso aggiungere la mia iniziale Item, non parte dell'origine dati, come PRIMO elemento in quello List<T>? Io ho:

// 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;

Risposte:


719

Usa il metodo Inserisci :

ti.Insert(0, initialItem);

8

4
@ 23W Probabilmente dovresti collegarti alla pagina inglese se vuoi collegarti a MSDN.
mbomb007,

Sarebbe possibile inserire alla fine dell'elenco?
Gary Henshall,

3
@GaryHenshall sì, usa il Addmetodo, si inserisce alla fine.
Martin Asenov,

2
Da .NET 4.7.1, è possibile utilizzare Append()e Prepend(). Controlla questa risposta
aloisdg si trasferisce su codidact.com l'

24

Aggiornamento: un'idea migliore, impostare la proprietà "AppendDataBoundItems" su true, quindi dichiarare "Scegli elemento" in modo dichiarativo. L'operazione di associazione dati verrà aggiunta all'elemento dichiarato staticamente.

<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


2
È abbastanza bello. L'OP non ha specificato ASP.NET ma è un bel trucco da sapere.
Matt Hamilton,

5

Da .NET 4.7.1, è possibile utilizzare l'effetto collaterale gratuitamente Prepend()e Append(). L'output sarà 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 ));

4

Uso List<T>.Insert

Sebbene non sia pertinente per il tuo esempio specifico, se le prestazioni sono importanti, considera anche l'uso LinkedList<T>perché l'inserimento di un elemento all'inizio di un List<T>richiede che tutti gli articoli vengano spostati. Vedi Quando dovrei usare un Elenco contro un LinkedList .


3

Utilizzare il metodo Inserisci di List<T>:

Metodo List.Insert (Int32, T): Insertsun elemento nella Lista in corrispondenza di specified index.

var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.