List <t>项目的添加和检索顺序是什么?

时间:2015-09-14 04:43:12

标签: c# winforms

所以,我有这个问题:我一直在WinForm的不同面板上的文本框中添加内容到这样的不同列表:

List<String> priceList= new List<String>();
foreach (Control c in pricePanel.Controls)
{
    if (c is TextBox)
    {
        priceList.Add(c.Text);
    }
}
List<String> numberItemsList= new List<String>();
foreach (Control c in numberItemsPanel.Controls)
{
    if (c is TextBox)
    {
        numberItemsList.Add(c.Text);
     }
 }
List<String> productsList = new List<String>();
foreach (Control control in productsPanel.Controls)
{
   if (control is ComboBox)
   {
       foreach (ComboBox c in productsPanel.Controls)
       {
            productsList.Add(c.SelectedValue.ToString());
       }
   }
}

现在,我知道List<T>类返回的项目与插入的顺序相同,但是当我在sql表中插入列表的内容时,它们的顺序与文本框在winform上。举一个例子,第一个文本框面板的值按以下顺序插入:
1
2
3
5
4
而第二个面板的值(相同数量的文本框和相同的布局)插入如下:
4
2
1
5
3
要从列表中获取值,我只需循环遍历它们:for (int i=0; i<priceList.Count; i++)。我相信问题是当我从文本框中获取值时,我想知道的是,是否有一种方法可以将文本框的顺序与项目在列表中的插入顺序相匹配。如果你有更好的方法来做到这一点而不是我做的混乱,请随意分享。谢谢!

1 个答案:

答案 0 :(得分:2)

确实列表中元素的顺序是您添加它们的顺序。只要您使用Add()添加它们。

将它们存储在sql表中时,它们根本没有特定的顺序添加到此表中,因为大多数数据库都不保留此顺序。如果您确实需要它们按照将它们添加到表中的顺序,则可以在添加它们时为元组添加时间戳。

insert into myTable (name, addedAt) values ("MyValue", now());

通过此时间戳通过

检索它们
select Name from myTable order by addedAt;

以上只是一个例子。