我制作了一个列表,在某些情况下,会填充该列表。易于理解的但是,当我尝试根据下拉选择ddlLeadCounty.SelectedItem.Value
筛选列表时,计数返回为0。这绝对不是真的,因为我已经手动检查了下拉列表中的值和下拉列表的值是否相同。
你们这些聪明的人能看出哪里出了问题吗?我尝试了以下两种方法,得到了相同的结果。
后面的c#.net代码
myList = myList.FindAll(delegate(Partner part)
{
return part.RegionId.Equals(ddlLeadCounty.SelectedItem.Value);
});
或
myList = myList.Where(c => c.RegionId.Equals(ddlLeadCounty.SelectedItem.Value)).ToList();
合作伙伴名单:
public class Partner
{
public int LeadOppCount;
public string Guid;
public int RegionId;
public Partner(int LeadOppCount, string Guid, int RegionId)
{
this.LeadOppCount = LeadOppCount;
this.Guid = Guid;
this.RegionId = RegionId;
}
}
下拉列表示例:
<asp:ListItem value="100000004">Berkshire</asp:ListItem>
在我的测试中,至少有一个列表项的regionId为100000004。
非常感谢。
考虑到你是我看到的RegionId
,我想它是一个integer
,所以写这样的东西一个伪代码:
int valueSelected = (int)ddlLeadCounty.SelectedItem.Value;
myList.FindAll(x=>x.RegionId == valueSelected );
换句话说,不要使用Equals
,因为可能在SelectedValue
中使用装箱值,而是使用具体类型。
应该适合您。
问题是SelectedIndex.Value是一个字符串值,而不是int,因此您必须解析它
var myListFiltered = myList.Where(c => c.RegionId.Equals(int.Parse(ddlLeadCounty.SelectedItem.Value))).ToList();