分支是复选框列表类型,但循环执行此操作时,它只添加一个项目,而我想在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));
}
}
答案 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()