Avatar billede Joshlo Nybegynder
04. marts 2009 - 15:51 Der er 4 kommentarer og
1 løsning

fjernelse af et item i en generisk liste

Hejsa,

jeg har en liste "result" der indeholder en masse text strenge. strenge.

den løber jeg igennem med en foreach, hvor inde i den er der en anden liste "stop" som løber en anden liste igennem for at sammenligne.
hvis result indeholder et ord der er i stop listen, skal det ord fjernes fra result listen.

har prøvet at gøre det på følgende måde:

foreach (var r in result)
{
  foreach (var o in stop)
  {
    if(r.Equals(o.word))
    {
      result.Remove(r);
      break;
    }
  }
}

men når den så fjerner ordet fra result listen, så kaster den følgende fejl:

[InvalidOperationException: Samlingen er blevet ændret. Optællingen bliver muligvis ikke udført.]
Avatar billede arne_v Ekspert
04. marts 2009 - 16:00 #1
.NET kan ikke lide at du modificere en liste som du itererer over.

Men det er langt nemmere at bruge nogle af de smarte metoder som f.eks. FindAll og Contains.
Avatar billede arne_v Ekspert
04. marts 2009 - 16:02 #2
Utestet:

List<X> newlist = oldlist.FindAll(delegate (X o) { return !stop.Contains(o); });
Avatar billede Joshlo Nybegynder
04. marts 2009 - 16:26 #3
jeg valgte at løse den på en mindre køn måde pt, ved at lave en temp der er mangen til result listen, og så bare løbe den igennem og stadig fjerne fra result listen.

men du kan lige smide i svar
Avatar billede arne_v Ekspert
04. marts 2009 - 16:40 #4
OK.

Men hvorfor skrive kode naar MS har lavet nogle metoder du kan bruge ?
Avatar billede Joshlo Nybegynder
05. marts 2009 - 09:44 #5
valgte at ændre den yderligere, så resultatet kom til at se sådan her ud:

var diff = result.Except(stop);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester