2010-08-16 4 views
0

ветка имеет тип списка флажков, но, проходя через нее, она добавляет только один элемент, в то время как я хочу сохранить все «li» в branch_id и хочу позже получить, почему он не добавляет все в branch_is. есть ли другой вариант, который может добавить все это в переменную branch_id.10 foreach loop issue

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

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

        } 
       } 

ответ

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(); 
+0

Боже мой каждый раз, когда новый объект создавал это у – NoviceToDotNet

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

        } 
       } 
0

Я однажды wrote about an extension method, что позволяет мне упростить выбор с помощью LINQ:

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

я использую 2.o Thats у Безразлично» я работаю. Ну, ваш ответ также очень помогает. спасибо – NoviceToDotNet