C# 使用lambda删除数组中前2个字符所在的dropdownlist中的项
Web.config:C# 使用lambda删除数组中前2个字符所在的dropdownlist中的项,c#,asp.net,linq,lambda,drop-down-menu,C#,Asp.net,Linq,Lambda,Drop Down Menu,Web.config: <add key="blacklistVendors" value="01,02"/> aspx string[]blacklistVendors=ConfigurationManager.AppSettings[“blacklistVendors”].Split(“,”); ddlvindor.Items.Cast().Where(i=>i.Value==“It”).ToList().ForEach(i=>ddlvindor.Items.Remove(
<add key="blacklistVendors" value="01,02"/>
aspx
string[]blacklistVendors=ConfigurationManager.AppSettings[“blacklistVendors”].Split(“,”);
ddlvindor.Items.Cast().Where(i=>i.Value==“It”).ToList().ForEach(i=>ddlvindor.Items.Remove(i));
我想将I.值更改为检查blacklistVendors字符串数组中是否存在该值的前两个字母。如果存在,它将删除dropdownlist中的项目
我想到了一些东西,但它有一个错误:
ddlTicketVendor.Items.Cast<ListItem>().Where(vendorSeries.Any(i => i.Value.Substring(0, 2))).ToList().ForEach(i => ddlTicketVendor.Items.Remove(i));
ddlTicketVendor.Items.Cast().Where(vendorSeries.Any(i=>i.Value.Substring(0,2))).ToList().ForEach(i=>ddlTicketVendor.Items.Remove(i));
当我放置vendorSeries时,似乎无法访问i.Value。是否在其中
错误:
错误39参数2:无法从“bool”转换为
'System.Func'
错误38“System.Collections.Generic.IEnumerable”
不包含“Where”和最佳扩展名的定义
方法重载
'System.Linq.Enumerable.Where(System.Collections.Generic.IEnumerable,
System.Func“”具有一些无效参数
这是编译器抱怨的表达式:
vendorSeries.Any(i => i.Value.Substring(0, 2))
您无法将其传递到其中
,因为它不是函数
以下是如何修复它:
ddlTicketVendor.Items.Cast<ListItem>()
.Select(i => new {Item = i, Prefix = i.Value.Substring(0, 2)})
.Where(i => vendorSeries.Any(s => i.Prefix == s))
.ToList()
.ForEach(i => ddlTicketVendor.Items.Remove(i.Item));
ddlTicketVendor.Items.Cast<ListItem>()
.Select(i => new {Item = i, Prefix = i.Value.Substring(0, 2)})
.Where(i => vendorSeries.Any(s => i.Prefix == s))
.ToList()
.ForEach(i => ddlTicketVendor.Items.Remove(i.Item));
var bannedPrefix = new HashSet<string>(vendorSeries);
ddlTicketVendor.Items.Cast<ListItem>()
.Where(i => !bannedPrefix.Contains(i.Value.Substring(0, 2)))
.ToList()
.ForEach(i => ddlTicketVendor.Items.Remove(i));