2012-08-25 60 views
0

我填充狀態DDL使用國家DDL填充狀態DDL使用國家DDL在LINQ

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子句和等於我在這裏得到一個錯誤:

Could not find an implementation of the query pattern for source type 'System.Collections.IEnumerable'. 'Where' not found. Consider explicitly specifying the type of the range variable 'row'.

回答

1

你說你試圖用一個給定的國家的國家名稱填充一個DropDownList,它看起來像你的foreach循環中的邏輯。它也看起來像你的foreach循環正在做很多不必要的工作。

當它真的只需要找到其中一個國家名稱時,它遍歷所有國家/地區名稱。然後它再次通過尋找國家的國名進行迭代。

你應該可以扔出去的是整個foreach循環,而使用這樣的:

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

GetStatesByCountry方法只返回屬於該國的國家名稱過去了,所以你只要能稱之爲,獲取這些國家的名稱,然後將它們分配給您的DropDownList

+0

但在此代碼之前像DropDownList1.SelectedValue = Session [「country」]。ToString();而國家的DDL值不會改變到另一個國家,我該如何改變它? –

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() ;  
} 
+0

當我這樣做時查詢它說Enumeration沒有結果和狀態DDL是空的。 –

+0

當您更改查詢時是否會引發異常? – Divi

+0

當我調試代碼,我越來越像枚舉在查詢沒有結果。 –