列表筛选返回为0,但它应该';t

本文关键字:返回 筛选 列表 | 更新日期: 2023-09-27 18:28:25

我制作了一个列表,在某些情况下,会填充该列表。易于理解的但是,当我尝试根据下拉选择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。

非常感谢。

列表筛选返回为0,但它应该';t

考虑到你是我看到的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();