Как добавить элемент в начало списка <T>? - PullRequest
353 голосов
/ 24 декабря 2008

Я хочу добавить опцию «Выбрать один» в выпадающий список, связанный с 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;

Ответы [ 4 ]

622 голосов
/ 24 декабря 2008

Используйте метод Вставка :

ti.Insert(0, initialItem);
23 голосов
/ 24 декабря 2008

Обновление: лучшая идея, установить для свойства "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

-Oisin

1 голос
/ 07 ноября 2018

Использование List<T>.Insert

Хотя это не относится к вашему конкретному примеру, если производительность важна, также рассмотрите возможность использования LinkedList<T>, потому что вставка элемента в начало List<T> требует перемещения всех элементов. См. Когда я должен использовать Список против LinkedList .

1 голос
/ 03 февраля 2018

Использование Вставка метод 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
...