如何添加项目到列表<T>?

我想在绑定到List<T>的下拉列表中添加一个“Select One”选项。

一旦我查询了List<T>,我如何将我的初始Item(不属于数据源的一部分)作为该List<T>中的FIRST元素添加?我有:

// 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;
295360 次浏览

更新:一个更好的想法,设置“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

使用插入方法:

ti.Insert(0, initialItem);

使用List<T>插入方法:

列表。插入方法(Int32, T): Inserts将一个元素插入到列表的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>的开头插入一个项需要移动所有项。看到什么时候我应该使用List vs 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));