从IEnumerable中删除一个项目

use*_*705 1 c#

我有IEnumerable字符串类型从复选框列表选择项目如下:

var list1 = chkboxlist.Items.Cast<ListItem>().Where(item => item.Selected == true).Select(item => item.Value);

if (list1.Contains("4"))
{
    //then remove that item from the list like

    for (int i = list1.Count() - 1; i >= 0; i--)
    {
        if (list1.ElementAt(i) == "4") list1.ToList().RemoveAt(i);
    }
}
Run Code Online (Sandbox Code Playgroud)

但项目仍然存在于该列表中.它没有被删除.

Jon*_*eet 7

你正在调用ToList()哪个创建一个新的列表,它是序列的副本,然后你从列表中删除它......但是你基本上扔掉了列表.

您应该将原始序列转换为列表,然后删除不需要的值...或者您可以使用Except以下开头:

var list1 = chkboxlist.Items
                      .Cast<ListItem>()
                      .Where(item => item.Selected)
                      .Select(item => item.Value)
                      .Except(new[] { "4" });
Run Code Online (Sandbox Code Playgroud)