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句を定義できず、ここでエラーが発生することです。

ソースタイプ'System.Collections.IEnumerable'のクエリパターンの実装が見つかりませんでした。「どこ」が見つかりません。範囲変数'row'のタイプを明示的に指定することを検討してください。

4

2 に答える 2

1

DropDownListに特定の国の州の名前を入力しようとしているとのことですが、そのロジックがforeachループ内にあるように見えます。また、foreachループが多くの不要な作業を行っているようです。

実際にそれらの国の名前の1つを見つけるだけでよい場合は、すべての国の名前を繰り返し処理します。次に、国名を繰り返して州を探します。

foreachそのループ全体を破棄して、代わりにこれを使用 できるはずです。

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

メソッドGetStatesByCountryは、渡された国名に属する州のみを返すため、それを呼び出して、それらの州の名前だけを取得し、それらをに割り当てることができるはずです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 に答える