Usuwanie i przeszukiwanie SortedList


(northwest) #1

Witam serdecznie,

Mam taki kod:

public static SortedList klienci = new SortedList();

static string[] explode2(String iLine)

{

return iLine.Split(new char[] { '|' });

}

...

...

int indexToRemove = Program.klienci.IndexOfKey(cudakkey);

foreach (string czy_jest2 in Program.klienci.Keys)

{

string[] p2;

string szukane, szukane2, szukane3;

p2 = explode2(czy_jest2); 

szukane = "1000000001";   

szukane2 = p2[0];    

szukane3 = p2[2];   

string mamygo = szukane2 + "|" + szukane + "|" + szukane3;

indexToRemove = Program.klienci.IndexOfKey(mamygo);

if (indexToRemove != -1) { Program.klienci.RemoveAt(indexToRemove); }

}

W tablicy przechowuje takie dane (generowane losowo):

-300771456|1000000001|zly!!

881875456|1000000001|pusty!!

3006755456|1000000041|zly!!

[/code]




Próbuje zrobić przeszukiwanie i czyszczenie tej listy ze wszystkich rekordów które posiadają na drugiej pozycji wartość 1000000001.



Wyżej wymieniony kod usuwa tylko 1 rekord z tej listy... :(

CO zrobić żeby usuwał wszystko?



Dziękuje z góry za pomoc,

Łukasz

-- [b]Dodane 22.07.2009 (Śr) 8:41[/b] --

[code] while ((indexToRemove = Program.klienci.IndexOfKey(mamygo)) != -1) Program.klienci.RemoveAt(indexToRemove);

ale też nie pomogło :frowning:


(Fiołek) #2

List.RemoveAll i w metodzie szukającej rozbijasz ciąg na trzy lub szukasz(szybsze będzie) "|1000000001|" w ciągu.