2009-11-08 14 views
5

Ich musste um meine Codezeilen herum ändern. Ich hatte vor so etwas wie dieseWie entferne ich ein Objekt aus einer Listensammlung?

// this is in a static method. 
List<string> mySTring = new List<string>(); 

mySTring.add("one"); 
mySTring.add("two"); 

jedoch auf einem meiner Seiten Ich habe einen Dropdownlist, die das Feld nicht benötigt „zwei“, so anstelle dem Schreiben doppelte Code alles, was ich tat, war

myString.remove("two"); 

Jetzt ich brauche meine Liste in eine List<SelectListItem> myList = new List<SelectListItem>();

So ändern ich habe es jetzt so aussieht:

List<SelectListItem> myList = new List<SelectListItem>() 
      { 
       new SelectListItem() { Text = "one", Value = "one"}, 
       new SelectListItem() { Text = "two", Value = "two"}, 
      }; 

Also, wie entferne ich die selectListItem, die "zwei" enthält? Ich weiß, ich könnte wahrscheinlich per Index entfernen. Aber ich werde vielleicht in der Zukunft in die Liste aufnehmen, damit ich nicht anfangen will, nachzusehen und sie zu ändern, wenn sich der Index ändert.

Dank

Antwort

8

List<T> wird, standardmäßig geht Objektreferenzen zu vergleichen (es sei denn SelectListItem eine Methode individuelle Gleichheit implementiert). Also, wenn Sie noch einen Verweis auf das zweite Element haben sich um, Sie werden es müssen entweder mit dem Verweis oder durch finden den gewünschten Eintrag:

var item = myList.First(x=>x.Value == "two"); 
myList.Remove(item); 

Index leichter sein kann ...

myList.RemoveAll(i => i.Text == "two"); 

Offensichtlich los alle die Elemente, deren Eigenschaft „Text“ ist „zwei“, aber da Sie verwenden es in einer Co bekommen dies:

+0

hmm hatte gehofft, Mausauswahl über das Autocomplete div machen muss jetzt danach suchen. Ich werde die Referenz nicht mehr haben, ich denke, ich werde per Index oder durch Suchen entfernen. Nicht sicher, was zu verwenden ist. Nur besorgt in der Zukunft füge ich etwas zu meiner Liste Sammlung hinzu und plötzlich ist es ein anderer Index und ich versuche herauszufinden, warum es nicht wokring und das ist der Grund. – chobo2

+1

Auch wie würde die Sortiermethode Sortierung der Liste funktionieren? Weil ich die Sortiermethode in meiner String-Liste verwendet habe (deshalb bin ich besorgt, dass sich der Index ändern wird). – chobo2

+0

Nun, Sie könnten immer einen anderen Container verwenden, der keine Brute-Force-Suche erfordert. – spender

6

Sie die RemovalAll-Methode verwenden, mboBox Ich gehe davon aus, dass Sie nur einen Eintrag für jeden "Text" -Wert haben.

0

wir können, indem Sie diesen folgenden Code

in die Jquery Funktion zur automatischen Vervollständigung

hier habe ich verwendet, um die ID Namen als Requiredid

$("#Requiredid").autocomplete({focus:function(e,ui) { 
     document.getElementById('Requiredid').value = ui.item.label; 
     document.getElementById('hdnValue').value = ui.item.id;//If You need this value you //can add this line 
}}); 
Verwandte Themen