0

我正在使用国家 DDL 填充国家 DDL

public static IEnumerable bindcountry()
{
    var countries = from c in getdata().Descendants(("country"))
                    orderby (string)c.Element("name")
                    select (string)c.Element("name");
    return countries;
}

public List<string> GetStatesByCountry(string CountryName)
{

    var query = from user in getdata().Descendants("country")
                where user.Element("name").Value == CountryName
                from t in user.Descendants("text")
                select t.Value;
    return query.ToList();
}

foreach (var VARIABLE in ProfileMasterDAL.bindcountry())
{
    if (VARIABLE.ToString().Contains(DropDownList1.SelectedItem.Text))
    {
        var query = from row in ProfileMasterDAL.bindcountry()
                    where row.(ProfileMasterDAL.GetStatesByCountrys(DropDownList1.SelectedItem.Text))
                    select row;

        DropDownList2.DataSource = query;
        DropDownList2.DataBind();
    }
}

问题是我无法定义 WHERE 子句和 equals 在这里我得到一个错误:

找不到源类型“System.Collections.IEnumerable”的查询模式的实现。'哪里' 没有找到。考虑明确指定范围变量“行”的类型。

4

2 回答 2

1

您说您正在尝试使用给定国家/地区的州名称填充 DropDownList,看起来该逻辑在您的foreach循环中。看起来您的foreach循环正在做很多不必要的工作。

当它真的只需要找到其中一个国家名称时,它会遍历所有国家名称。然后它还会再次遍历国家名称以查找州。

您应该能够丢弃整个foreach循环,而是使用它:

var query = ProfileMasterDAL.GetStatesByCountry(DropDownList1.SelectedItem.Text);
DropDownList2.DataSource = query;   
DropDownList2.DataBind();   

您的GetStatesByCountry方法仅返回属于传入的 Country 名称的州,因此您应该能够调用它,获取这些州的名称,然后将它们分配给您的DropDownList.

于 2012-08-25T15:25:38.203 回答
0

尝试改变:

public static IEnumerable bindcountry()     
{           
var countries = from c in getdata().Descendants(("country")) orderby (string)c.Element("name") select (string)c.Element("name");

return countries ;       
}

public static IList<string> bindcountry()     
{           
var countries = from c in getdata().Descendants(("country")) orderby (string)c.Element("name") select (string)c.Element("name");        

return countries.ToList() ;       
} 
于 2012-08-25T06:47:26.830 回答