foreach循环问题

时间:2010-08-16 05:10:26

标签: asp.net

分支是复选框列表类型,但循环执行此操作时,它只添加一个项目,而我想在branch_id中存储所有“li”,并希望稍后检索为什么它不在branch_is中添加所有内容。是否有任何其他选项可以将所有这些添加到变量branch_id。

          foreach (ListItem li in branch.Items) 
                {
                    if(li.Selected)
                    {

                        List<int> branch_id = new List<int>();
                        branch_id.Add(Convert.ToInt32(li.Value));

                    }
                } 

3 个答案:

答案 0 :(得分:1)

试试这个

List<int> branch_id = new List<int>();
foreach (ListItem li in branch.Items) 
{
     if(li.Selected)
     {
          branch_id.Add(Convert.ToInt32(li.Value));
     }
} 

如果你使用的是.Net 3.5或更高版本,可以使用LINQ

List<int> branch_id = branch.Items.Where(li=>li.Selected).Select(li=>li.Value).ToList();

答案 1 :(得分:0)

您无需再次初始化List<int> branch_id = new List<int>();

如果初始化它将为branch_id创建一个新实例并清除所有当前值。

foreach (ListItem li in branch.Items) 
                {
                    if(li.Selected)
                    {

                        List<int> branch_id = new List<int>(); // during each time it loops it create new memory and you can't save all the values
                        branch_id.Add(Convert.ToInt32(li.Value));

                    }
                }



so do 

List<int> branch_id = new List<int>(); 
foreach (ListItem li in branch.Items) 
                {
                    if(li.Selected)
                    {


                        branch_id.Add(Convert.ToInt32(li.Value));

                    }
                } 

答案 2 :(得分:0)

我曾经wrote about an extension method允许我使用LINQ简化选择:

var branch_id = branch.Items.WhereSelected().Select(i => Convert.ToInt32(i.Value)).ToList()