C# LINQ查询的Dropdownlist数据源不工作

C# LINQ查询的Dropdownlist数据源不工作,c#,linq,C#,Linq,我有一个system.Linq.Enumerable.WhereListIterator,它返回的值如下图所示 [ 但当我把它添加到列表中,然后再添加到下拉数据源中时,它就不起作用了 请帮忙 这是我的密码 using (var dr = db.ExecuteDataReader("GetDealersWithDiscount", CommandType.StoredProcedure, param)) { while (dr.Read())

我有一个system.Linq.Enumerable.WhereListIterator,它返回的值如下图所示 [

但当我把它添加到列表中,然后再添加到下拉数据源中时,它就不起作用了

请帮忙

这是我的密码

using (var dr = db.ExecuteDataReader("GetDealersWithDiscount", CommandType.StoredProcedure, param))
        {
            while (dr.Read())
            {
                dealers.Add(new Dealer
                {
                    Name = Convert.ToString(dr["dealer_name"]),
                    Adress = Convert.ToString(dr["dealer_address"]),
                    Zipcode = Convert.ToString(dr["dealer_zip_code"]),
                    Image = Convert.ToString(dr["dealer_name"]),
                    Manufacturer = Convert.ToString(dr["manufacturer_id"])
                });
            }

        }
事件
string[]zipcodes=strzipcode.Split(',');
列表过滤器列表=新列表();
过滤器列表。添加(新经销商
{
Zipcode=txtZipCode.Text.Trim()
});
对于(int x=0;xvar filteredFileSet=derals.Where(i=>filterList.Contains(i));
dtlSanPham.DataSource=filteredFileSet.ToList();
dtlSanPham.DataBind();

您似乎在
过滤器列表
中创建新的经销商,仅使用zipcode,然后将它们与
经销商
列表中包含zipcode以及其他信息的经销商进行比较(这意味着它们永远不会匹配)

不要将经销商与经销商进行比较,而是尝试创建一个仅包含zipcodes的
列表
,并对其进行筛选。在where子句中,您需要引用ZipCode类的string属性,或在类中重写
ToString()
,以显示它。

Where(i=>filterList.Contains(i.ZipCode.Value));

Where(i=>filterList.Contains(i.ZipCode.ToString());

string[]zipcodes=strzipcode.Split(',');
列表过滤器列表=新列表();
Add(txtZipCode.Text.Trim());
zipcodes.ForEach(zipCode=>{
filterList.Add(zipCode);
})

var filteredFileSet=deralers.Where(i=>filterList.Contains(i.ZipCode.Value)); dtlSanPham.DataSource=filteredFileSet.ToList(); dtlSanPham.DataBind();
您似乎在
过滤器列表
中创建新的经销商,仅使用zipcode,然后将它们与
经销商
列表中包含zipcode以及其他信息的经销商进行比较(这意味着它们永远不会匹配)

不要将经销商与经销商进行比较,而是尝试创建一个仅包含zipcodes的
列表
,并对其进行筛选。在where子句中,您需要引用ZipCode类的string属性,或在类中重写
ToString()
,以显示它。

Where(i=>filterList.Contains(i.ZipCode.Value));

Where(i=>filterList.Contains(i.ZipCode.ToString());

string[]zipcodes=strzipcode.Split(',');
列表过滤器列表=新列表();
Add(txtZipCode.Text.Trim());
zipcodes.ForEach(zipCode=>{
filterList.Add(zipCode);
})

var filteredFileSet=deralers.Where(i=>filterList.Contains(i.ZipCode.Value)); dtlSanPham.DataSource=filteredFileSet.ToList(); dtlSanPham.DataBind();

请发布一些代码而不是图像请提供更多详细信息,如Winforms/WPF等。@Emad提到发布实际代码,可能还会发布更多代码。
Dealer
是否完全覆盖
Equals
?否则您的
包含
检查无论如何都无法工作。FilteredFiles似乎是空的。您是否可以增加e代码?
经销商
变量来自何处?请发布一些代码而不是图像请提供更多详细信息,如Winforms/WPF等@Emad提到的发布实际代码,可能还有更多代码。
经销商
是否完全覆盖
等于
?否则您的
包含
检查将无法正常工作。似乎过滤器文件et为空您是否可以增加代码的范围?
deralers
var来自何处?var filteredFileSet=deralers.Where(i=>filterList.Contains(i.ZipCode))不起作用,因为filterList不包含ZipCode的定义。谢谢您的帮助,您可以覆盖
ToString()
在ZipCode类中提供值?然后可以使用
Where(i=>filterList.Contains(i.ZipCode.ToString()))
哪一个会起作用。或者,ZipCode类中保存ZipCode值的string属性是什么?非常感谢Thematkinson,它工作得很好,您节省了我的时间,很高兴我能提供帮助。如果您对解决方案满意,请不要忘了标记为answer。var filteredFileSet=Deders.Where(I=>filterList.Contains(I.ZipCode))无法工作,因为filterlist不包含zipcode的定义。感谢我所看到的任何方式,您可以在zipcode类中重写
ToString()
以提供值吗?然后您可以使用
Where(i=>filterlist.Contains(i.zipcode.ToString()))
哪一个会起作用。或者,ZipCode类中保存ZipCode值的string属性是什么?非常感谢Thematkinson,它工作得很好,您节省了我的时间,很高兴我能提供帮助。如果您对解决方案满意,请不要忘了标记为答案。
string[] zipcodes = strzipcode.Split(',');
List<Dealer> filterList = new List<Dealer>();
filterList.Add(new Dealer
{
    Zipcode = txtZipCode.Text.Trim()
});
for (int x = 0; x < zipcodes.Length-1; x++)
{
    filterList.Add(new Dealer
    {
        Zipcode = zipcodes[x]
    });
}
var filteredFileSet = dealers.Where(i => filterList.Contains(i));
dtlSanPham.DataSource = filteredFileSet.ToList();
dtlSanPham.DataBind();
string[] zipcodes = strzipcode.Split(',');
List<string> filterList = new List<string>();
filterList.Add(txtZipCode.Text.Trim());

zipcodes.ForEach(zipCode => {
  filterList.Add(zipCode);
})

var filteredFileSet = dealers.Where(i => filterList.Contains(i.ZipCode.Value));
dtlSanPham.DataSource = filteredFileSet.ToList();
dtlSanPham.DataBind();