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


417

にバインドされたドロップダウンリストに「1つ選択」オプションを追加したいのですがList<T>

のクエリを実行した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;

回答:


719

Insertメソッドを使用します。

ti.Insert(0, initialItem);

8
@BrianF、そうですね。ドキュメント:This method is an O(n) operation, where n is Count.
2017

4
@ 23W MSDNにリンクする場合は、おそらく英語のページにリンクする必要があります。
mbomb007

リストの最後に挿入することは可能ですか?
Gary Henshall 2017

3
@GaryHenshallはい、Addメソッドを使用して、最後に挿入します。
Martin Asenov

2
.NET 4.7.1以降、Append()およびを使用できますPrepend()この回答を確認してください
aloisdgがcodidact.comに移動

24

更新:より良いアイデア、「AppendDataBoundItems」プロパティをtrueに設定してから、「アイテムの選択」を宣言的に宣言します。データバインディング操作により、静的に宣言されたアイテムが追加されます。

<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

-オイシン


2
それはいいね。OPはASP.NETを指定していませんが、これは知っておくと便利です。
Matt Hamilton、

5

.NET 4.7.1以来、あなたは無料の副作用を使用することができますPrepend()し、Append()。出力は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

使用する List<T>.Insert

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


3

挿入方法を使用しますList<T>

List.Insertメソッド(Int32、T):Insertsのリストへの要素specified index

var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.