如何从列表集合中删除对象?

时间:2009-11-08 22:26:29

标签: c# .net asp.net asp.net-mvc

我不得不改变我的代码行。我之前有这样的事情

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

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

然而,在我的一个页面上,我有一个不需要字段“2”的下拉列表,所以我没有写完重复的代码,而是

myString.remove("two");

现在我需要将我的列表更改为List<SelectListItem> myList = new List<SelectListItem>();

所以我现在看起来像这样:

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

那么现在如何删除包含“two”的selectListItem?我知道我可能会使用索引删除。但我可能会在将来添加到列表中,所以如果索引发生变化,我不想开始寻找并更改它。

由于

3 个答案:

答案 0 :(得分:8)

默认情况下,

List<T>将比较对象引用(除非SelectListItem实现自定义相等方法)。因此,除非您仍然参考第二项,否则您必须通过引用或查找所需的项目来获取它:

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

指数可能更容易......

答案 1 :(得分:7)

您可以使用RemovalAll方法:

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

显然这会消除所有“Text”属性为“two”的项目,但是因为你在ComboBox中使用它我假设你只有一个项目对于每个“文本”值。

答案 2 :(得分:0)

我们可以通过添加以下代码

对自动完成div进行鼠标选择

进入jquery自动完成功能

这里我使用了id名称作为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
}});