[C#] List <T>의 시작 부분에 항목을 추가하는 방법은 무엇입니까?

에 바인딩 된 드롭 다운 목록에 “하나 선택”옵션을 추가하고 싶습니다 List<T>.

을 쿼리 하면 데이터 소스의 일부가 아닌 List<T>초기 Item요소를 FIRST 요소로 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;



답변

삽입 방법을 사용하십시오 .

ti.Insert(0, initialItem);


답변

업데이트 : 더 나은 아이디어는 “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

오이 신


답변

.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 ));


답변

사용하다 List<T>.Insert

특정 예제와 관련이 없지만 성능이 중요한 경우 LinkedList<T>항목을 시작 부분에 삽입 List<T>하려면 모든 항목을 이동해야 하므로 사용을 고려 하십시오 . List와 LinkedList는 언제 사용해야합니까?를 참조하십시오 .


답변

다음의 삽입 방법을 사용 하십시오List<T> .

List.Insert Method (Int32, T) : Inserts의 List에 요소 specified index.

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


답변