Как добавить элемент в начало List <T>?

Я хочу добавить опцию «Выбрать один» в раскрывающийся список, привязанный к 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;
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
448
0
235 844
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

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

Это круто. В OP не указан ASP.NET, но это хороший трюк.

Matt Hamilton 24.12.2008 03:54
Ответ принят как подходящий

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

ti.Insert(0, initialItem);

@BrianF, да ты прав. Док: This method is an O(n) operation, where n is Count.

23W 15.02.2017 15:51

@ 23W Вам, вероятно, следует сделать ссылку на английскую страницу, если вы собираетесь ссылаться на MSDN.

mbomb007 09.05.2017 19:00

Можно ли вставить в конец списка?

Gary Henshall 11.12.2017 17:36

@GaryHenshall да, используйте метод Add, он вставляет в конце.

Martin Asenov 02.01.2018 11:19

Начиная с .NET 4.7.1, вы можете использовать Append() и Prepend(). Отметьте этот ответ

aloisdg 08.01.2020 13:13

У меня не работает - не могу неявно преобразовать тип void в System.Collections.Generic.List <initialItem>

MC9000 07.03.2021 03:53

Используйте метод ВставлятьList<T>:

List.Insert Method (Int32, T): Inserts an element into the List at the specified index.

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

Используйте List<T>.Insert

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

Начиная с .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 ));

Другие вопросы по теме