如何删除SelectListItem中的项目

use*_*345 2 c# c#-4.0

我想从selectlistitem中删除一个项目.到目前为止,我还没有取得任何成功

这是代码的快照

使用System.Collections.Generic;

        List<SelectListItem> abcd = new List<SelectListItem>();
        SelectListItem i1 = null;
        i1 = new SelectListItem();
        i1.Text = "t0";
        i1.Value = "v0";
        i1.Selected = false;
        abcd.Add(i1);
        i1 = new SelectListItem();
        i1.Text = "";
        i1.Value = "";
        i1.Selected = false;
        abcd.Add(i1);
        i1 = new SelectListItem();
        i1.Text = "t1";
        i1.Value = "v1";
        i1.Selected = false;
        abcd.Add(i1);
Run Code Online (Sandbox Code Playgroud)

我试图删除与之匹配的abcd项目之一:

        SelectListItem f = new SelectListItem();
        f.Selected = false;
        f.Text = "t0";
        f.Value = "v0";
        f.Selected = false;

        int x = abcd.IndexOf(f);  //return -1
        bool b = abcd.Remove(f); //return false
Run Code Online (Sandbox Code Playgroud)

......但它没有删除.我试图找到索引,它总是返回-1因为我不知道特定列表的位置,所以removeat方法无济于事.

非常感谢你的帮助

xbr*_*ady 6

如果我理解正确,这应该有效.您将需要修改此选项以处理具有要删除的值的多个SelectListItem值的情况,或者如果没有SelectListItem具有您的值.

abcd.Remove(abcd.Where(c => c.Value == "v0").Single());
Run Code Online (Sandbox Code Playgroud)

要么

abcd = abcd.Where(c => c.Value != "v0").ToList();
Run Code Online (Sandbox Code Playgroud)

要么

abcd.RemoveAll(c => c.Value == "v0");
Run Code Online (Sandbox Code Playgroud)