2012-01-26 45 views
0

我的XML文件如下,XML和IDictionary的

<state name ="Alaska"> 
<Location Name="loc1"> 
    <Address>xyz</Address> 
    <DateNTime>Saturday, Oct 2, 8pm</DateNTime> 
</Location> 
<Location Name="loc2"> 
    <Address>abc</Address> 
    <DateNTime>Saturday, Oct 2, 10am</DateNTime> 
</Location> 
</state> 

這樣,我有50個州。每個州都會在下拉列表中,點擊狀態時,不同位置的地址和時間需要以網格視圖顯示。這是代碼

private static IDictionary<string, Dictionary<string, Property>> dictionary; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     XDocument doc = XDocument.Load(Server.MapPath("test2.xml")); 

     dictionary = doc.Root.Elements("state").ToDictionary(
      state => state.Attribute("name").Value, 
      state => state.Elements("Location").ToDictionary(
       location => location.Attribute("Name").Value, 
       Property)); 

     var x = dictionary.Keys; 
     DropDownList1.DataSource = x; 
     DropDownList1.DataBind(); 
} 
} 
public void OnSelectedIndexChanged(Object sender, EventArgs e) 
{ 

    GridView1.DataSource = from item in dictionary[DropDownList1.SelectedItem.Text] 
          select new { col1 = item.Key, col2 = item.Value }; 
    GridView1.DataBind(); 

} 

public class Property 
{ 
    public string address; 
    public string datetime; 
} 

在這裏,我不知道如何聲明IDictionary並相應地檢索數據。任何人都可以解釋我嗎?

回答

1

試試這個:

dictionary = doc.Root.Elements("state").ToDictionary(
       s => s.Attribute("name").Value, 
       s => s.Elements("Location").ToDictionary(
        loc => loc.Attribute("Name").Value, 
        loc => new Property 
        { 
         address = loc.Element("Address").Value, 
         datetime = loc.Element("DateNTime").Value 
        })); 
+0

謝謝您的回答。我有我的解決方案! – Krishh