2013-12-17 3 views
0

У меня есть массив какФильтрующие элементы массива

enter image description here

То есть, каждый элемент имеет свою категорию в следующем индексе. Мне нужны все предметы, чья категория - TotalNumbers и CurrentNumbers.

Я попытался

int i = 1; 
      foreach (string item in statsname) 
      { 
       //only number type stats are added to the comboboxes. 
       if ((statsname[i].ToUpperInvariant()==("TOTALNUMBER")) || ((statsname[i].ToUpperInvariant()==("CURRENTNUMBER")))) 
       { 
        comboBox1.Items.Add(statsname[i-1]); 
        i++; 
        i++; 
       } 
       comboBox1.SelectedIndex = 0; 
      } 

Видимо, это не проверяет, что я правильно нужно.

Как мне изменить мои коды, чтобы получить то, что мне нужно?

ответ

2

Кажется, что лучше использовать для цикла вместо Еогеасп:

for (int i = 1; i < statsname.Length; i += 2) 
{ 
    //only number type stats are added to the comboboxes. 
    if ((statsname[i].ToUpperInvariant()==("TOTALNUMBER")) || ((statsname[i].ToUpperInvariant()==("CURRENTNUMBER")))) 
     comboBox1.Items.Add(statsname[i-1]); 
} 
+0

Хенрик выиграл it.Thnx –

2

Linq приходит на помощь!

var listItems = from s in statsname where s.Equals("TOTALNUMBER", StringComparison.InvariantCultureIgnoreCase) || s.Equals("CURRENTNUMBER", StringComparison.InvariantCultureIgnoreCase) select new ListItem(s); 

comboBox1.AddRange(listItems); 

Код не проверен или скомпилирован, но вы можете иметь представление о том, что я сказал.

+0

Я НЕ нужно добавить те, которые TOTALNUMBER и CurrentNumber.I необходимо добавить ОДНО ВЫШЕ ЭТО в массив. –

+0

@AnoushkaSeechurn. Тогда вы должны были сказать это в сообщении. В вашем сообщении указано иное: «Мне нужны все предметы, категория которых - TotalNumbers и CurrentNumbers». – dcastro

+0

@dcastro, сообщение также упоминается «каждый элемент имеет свою категорию в следующем индексе». Это означает, что условие проверки является TotalNumber и CurrentNumber, но дисплей должен быть элементами индекса выше этих. –

0

Я не уверен, почему вы используете индекс в цикле foreach. Ниже код должен работать для вас

foreach (string item in statsname) 
     { 

      if (item.ToUpper() == "TOTALNUMBER" || item.ToUpper() == "CURRENTNUMBER") 
      { 
       comboBox1.Items.Add(item); 

      } 

     } 
     comboBox1.SelectedIndex = 0; 
1
var filteredValues = Array.FindAll(source, s => s.ToUpperInvariant() == "TOTALNUMBER" || 
                  s.ToUpperInvariant() == "CURRENTNUMBER").ToList() 
Смежные вопросы