C# 如何在c中从dropdownlist控件中删除项#

C# 如何在c中从dropdownlist控件中删除项#,c#,drop-down-menu,C#,Drop Down Menu,我有一个dropwdown列表,其中很少有这样的项目(格式为“名称编号”): 现在,我必须根据其他查询中的值从上面的列表中删除一项 我的另一个查询给我一个字符串格式的数字,我必须删除上面dropdownlist第二部分(连字符后)中完全相同的项 例如:我的查询结果是“5456454” 现在我必须从dropdownlist中删除第三项(peterheins-5456454),它与我的查询返回的数字匹配 我正在尝试使用 ddl.Items.Remove 但是我没有得到我应该通过的参数。dropdo

我有一个dropwdown列表,其中很少有这样的项目(格式为“名称编号”):

现在,我必须根据其他查询中的值从上面的列表中删除一项

我的另一个查询给我一个字符串格式的数字,我必须删除上面dropdownlist第二部分(连字符后)中完全相同的项

例如:我的查询结果是“5456454”

现在我必须从dropdownlist中删除第三项(peterheins-5456454),它与我的查询返回的数字匹配

我正在尝试使用

ddl.Items.Remove
但是我没有得到我应该通过的参数。dropdownlist中的文本字段和值字段都相同,我无法修改它们。所以我不能用

ddl.Items.FindByValue()
有什么帮助吗


提前感谢。

如果要用ListItem对象填充DropDownList,我会将文本例如设置为“Peter Heins-5456454”,并将值设置为“5456454”

然后,你可以按照你描述的去做,然后打电话给我

     string value = "5456454";
     ListItem valueToRemove = ddl.Items.FindByValue(valueToRemove);
     dd1.Remove(valuetoRemove);
编辑:如果您绝对无法更改该值(无论是出于学校目的还是其他原因),我会这样做

        string id = "5456454";
        foreach (ListItem item in dd1.Items)
        {
            if (item.Text.Contains(id))
            {
                dd1.Items.Remove(item);
            }
        }

你可以这样做:

var removeItem = ddl.Items.Cast<ListItem>()
                          .Where(x => x.Value.Contains(number))
                          .FirstOrDefault()

ddl.Items.Remove(removeItem);
var removietem=ddl.Items.Cast()
其中(x=>x.Value.Contains(number))
.FirstOrDefault()
ddl.Items.Remove(removietem);

如何填充下拉控件?您是否正在使用数据源绑定(如果没有,您应该)-看看我是通过for循环而不是数据源绑定添加项的。我强烈建议您使用数据绑定-在执行此类搜索操作时,它将使您的生活更加轻松,并且更易于维护。顺便说一句,我假设这是Winforms?不,这就是我提到的。我无法更改下拉列表的值字段。文本字段和值字段在我的答案中都是相同的(名称编号)。希望这有助于解决您的问题。非常感谢。这起作用了。但现在我有一个问题。由于Contains用作子字符串,它还可以删除其他子字符串。与以下场景类似:Abcd-123
fghdg-456123
jhghg-7989现在如果我选中包含(123),它也将删除第一个和第二个。对吗?@Santosh-不,它将使用第一个匹配的项目。我假设你要传递的号码是唯一的?
        string id = "5456454";
        foreach (ListItem item in dd1.Items)
        {
            if (item.Text.Contains(id))
            {
                dd1.Items.Remove(item);
            }
        }
var removeItem = ddl.Items.Cast<ListItem>()
                          .Where(x => x.Value.Contains(number))
                          .FirstOrDefault()

ddl.Items.Remove(removeItem);