¿Cómo agregar un elemento al comienzo de la Lista <T>?


417

Quiero agregar una opción "Seleccionar uno" a una lista desplegable vinculada a un List<T>.

Una vez que pregunto por List<T>, ¿cómo agrego mi inicial Item, no parte de la fuente de datos, como el PRIMER elemento en eso List<T>? Yo tengo:

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

Respuestas:


719

Use el método Insertar :

ti.Insert(0, initialItem);

8
@BrianF, sí, tienes razón. Doc:This method is an O(n) operation, where n is Count.
23W

44
@ 23W Probablemente debería vincular a la página en inglés si va a vincular a MSDN.
mbomb007

¿Sería posible insertar al final de la lista?
Gary Henshall

3
@GaryHenshall sí, use el Addmétodo, se inserta al final.
Martin Asenov

2
Desde .NET 4.7.1, puede usar Append()y Prepend(). Verifique esta respuesta
aloisdg se muda a codidact.com el

24

Actualización: una mejor idea, establezca la propiedad "AppendDataBoundItems" en verdadero, luego declare el "Elegir elemento" declarativamente. La operación de enlace de datos se agregará al elemento declarado estáticamente.

<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

-Oisina


2
Eso es muy bonito. El OP no especificó ASP.NET, pero es un buen truco para saber.
Matt Hamilton

5

Desde .NET 4.7.1, puede usar el efecto secundario libre Prepend()y Append(). La salida será 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

Utilice el método de inserción de List<T>:

Método List.Insert (Int32, T): Insertsun elemento en la Lista en el specified index.

var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.