Jak dodać element na początku listy <T>?


417

Chcę dodać opcję „Wybierz jeden” do listy rozwijanej powiązanej z List<T>.

Po zapytaniu o to List<T>, jak dodać swój początkowy Item, a nie część źródła danych, jako PIERWSZY element w tym List<T>? Mam:

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

Odpowiedzi:


719

Użyj metody Wstaw :

ti.Insert(0, initialItem);

8
@BrianF, Tak, masz rację. Dokument:This method is an O(n) operation, where n is Count.
23 W

4
@ 23W Prawdopodobnie powinieneś link do strony w języku angielskim, jeśli zamierzasz link do MSDN.
mbomb007

Czy można wstawić na końcu listy?
Gary Henshall,

3
@GaryHenshall tak, użyj Addmetody, wstawia na końcu.
Martin Asenov

2
Od wersji .NET 4.7.1 możesz używać Append()i Prepend(). Sprawdź tę odpowiedź
aloisdg przechodzi na codidact.com

24

Aktualizacja: lepszy pomysł, ustaw właściwość „AppendDataBoundItems” na wartość true, a następnie zadeklaruj deklarację „Wybierz element”. Operacja wiązania danych doda do statycznie zadeklarowanego elementu.

<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
To fajnie. OP nie określił ASP.NET, ale fajnie jest wiedzieć.
Matt Hamilton

5

Od wersji .NET 4.7.1 możesz korzystać z efektów ubocznych za darmo Prepend()i Append(). Wyjście będzie 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

Posługiwać się List<T>.Insert

Jeśli nie jest to istotne w twoim konkretnym przykładzie, jeśli wydajność jest ważna, rozważ również użycie, LinkedList<T>ponieważ wstawienie elementu na początku List<T>wymaga, aby wszystkie elementy zostały przeniesione. Zobacz, kiedy powinienem użyć listy vs LinkedList .


3

Użyj metody WstawList<T> :

Metoda List.Insert (Int32, T): Insertselement na liście w specified index.

var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.