web-dev-qa-db-ja.com

リスト<T>の先頭にアイテムを追加するにはどうすればいいですか?

List<T>にバインドされたドロップダウンリストに "Select One"オプションを追加したいです。

List<T>を問い合わせたら、データソースの一部ではなく、最初のItemをそのList<T>の最初の要素として追加するにはどうすればよいですか。私は持っています:

// 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;
354
Ash Machine

Insert メソッドを使用してください。

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

更新:より良いアイデア、 "AppendDataBoundItems"プロパティをtrueに設定し、それから "Choose item"を宣言的に宣言する。データバインド操作は、静的に宣言された項目に追加されます。

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

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

- オイシン

23
x0n

List<T>.Insertを使う

特定の例には関係ありませんが、パフォーマンスが重要な場合は、LinkedList<T>の先頭に項目を挿入するとすべての項目を移動する必要があるため、List<T>の使用も検討してください。 ListとLinkedListをいつ使うべきか を参照してください。

1
sonny

List<T>Insertメソッドを使います。

List.Insertメソッド(Int32、T):Insertsspecified indexのListの要素です。

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