Làm cách nào để thêm mục vào đầu Danh sách <T>?


417

Tôi muốn thêm tùy chọn "Chọn một" vào danh sách thả xuống bị ràng buộc với a List<T>.

Khi tôi truy vấn List<T>, làm thế nào để tôi thêm phần đầu tiên Item, không phải là một phần của nguồn dữ liệu, như là phần tử FIRST trong đó List<T>? Tôi có:

// 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;

Câu trả lời:


719

Sử dụng phương thức Chèn :

ti.Insert(0, initialItem);

8
@BrianF, vâng bạn đúng. Tài liệu:This method is an O(n) operation, where n is Count.
23W

4
@ 23W Có lẽ bạn nên liên kết đến trang tiếng Anh nếu bạn định liên kết đến MSDN.
mbomb007

Có thể chèn vào cuối danh sách không?
Gary Henshall

3
@GaryHenshall có, sử dụng Addphương pháp, nó chèn vào cuối.
Martin Asenov

2
Kể từ .NET 4.7.1, bạn có thể sử dụng Append()Prepend(). Kiểm tra câu trả lời này
aloisdg chuyển đến codidact.com

24

Cập nhật: một ý tưởng tốt hơn, đặt thuộc tính "AppendDataBoundItems" thành true, sau đó khai báo "Chọn mục" theo cách khai báo. Hoạt động dữ liệu sẽ thêm vào mục khai báo tĩnh.

<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/l Library / system.web.ui.webcontrols.listcontrol.appenddatabounditems.aspx

-Oinin


2
Điều đó thật tuyệt. OP không chỉ định ASP.NET nhưng đó là một mẹo hay để biết.
Matt Hamilton

5

Kể từ .NET 4.7.1, bạn có thể sử dụng hiệu ứng phụ miễn phí Prepend()Append(). Đầu ra sẽ là một 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 ));


3

Sử dụng phương thức Chèn của List<T>:

List.Insert Phương thức (Int32, T): Insertsmột phần tử vào Danh sách tại specified index.

var names = new List<string> { "John", "Anna", "Monica" };
names.Insert(0, "Micheal"); // Insert to the first element
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.