繁体   English   中英

列表按什么顺序 <T> 添加和检索项目?

[英]In what order are List<T> items added and retrieved?

所以,我有一个问题:我一直在将文本框的内容添加到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

4
同时插入第二个面板中的值(与第一个面板相同的文本框数量和布局),如下所示:
4
2
1

3
为了从列表中获取值,我只是遍历它们: for (int i=0; i<priceList.Count; i++) 我相信问题在于,当我从文本框中获取值时,我想知道的是,是否有一种方法可以将文本框的顺序与项目在列表中的插入顺序进行匹配。 如果您有更好的方法来代替我做的烂摊子,请随时分享。 谢谢!

实际上,列表中元素的顺序就是您添加它们的顺序。 只要使用Add()将它们Add()

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

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

检索通过此时间戳排序的它们

select Name from myTable order by addedAt;

以上仅是示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM