2013-04-24 2 views
1

Итак, меня попросили удалить коды тура, которые заканчиваются с буквой G, GE, G = или Z. Единственное, что я считаю, мы используем этот звонок для много страниц, и именно по этой причине я не могу изменить вызов базы данных в первую очередь, поэтому я хочу сделать это специально для этого человека. Мой код вызывает arrayList, который заполняет все коды маршрутов, которые у нас есть. Есть ли способ удалить туры с помощью букв выше. Вот с чем мне нужно работать.Нужно удалить значения из ArrayList в C#

public void LoadTourCodes() 
{ 
    ddlTourCode.Items.Clear(); 

    if (ddlTourCode.Visible) 
    { 
     ddlTourCode.Items.Add(new ListItem(" ", "")); 

     ArrayList tourCodes; 
     tourCodes = EblTipTours.FindTourCodes(); 

     foreach (string tourCode in tourCodes) 
     {     
      ddlTourCode.Items.Add(tourCode); 
     } 
    } 
} 

ответ

4

Вы можете сделать это с помощью LINQ, как это:

var toRemove = new []{"G", "GE", "G=", "Z"}; 
foreach (string tourCode in tourCodes.Where(code => !toRemove.Any(suffix => code.EndsWith(suffix)))) { 
    ddlTourCode.Items.Add(tourCode); 
} 

Если вы не можете использовать LINQ, потому что это традиционная система, вы можете переписать код так:

string[] toRemove = new string[] {"G", "GE", "G=", "Z"}; 
foreach (string tourCode in tourCodes) { 
    bool good = true; 
    foreach (string suffix in toRemove) { 
     if (tourCode.EndsWith(suffix)) { 
      good = false; 
      break; 
     } 
    } 
    if (!good) continue; 
    ddlTourCode.Items.Add(tourCode); 
} 
+0

Да мы используем LINQ, и похоже, что вторая часть работала до совершенства !! Большое вам спасибо за помощь, и я понимаю, что вы делаете с флагами намного проще, чем удаление, просто не добавляйте его. Отлично!! – user1566783

Смежные вопросы