Linq 如何填充城市对应的选定状态

Linq 如何填充城市对应的选定状态,linq,Linq,我下面有一个xml。现在我想根据所选的州(下面给出了代码)填充下拉列表中的所有城市,但我只得到第一个城市,而不是所有城市。 如何获取所有城市。请参阅下面的代码 <?xml version="1.0" encoding="utf-8" ?> <states> <state> <stateid>1</stateid> <city>umr</city> <city>kat

我下面有一个xml。现在我想根据所选的州(下面给出了代码)填充下拉列表中的所有城市,但我只得到第一个城市,而不是所有城市。 如何获取所有城市。请参阅下面的代码

<?xml version="1.0" encoding="utf-8" ?> 
<states>
  <state> 
    <stateid>1</stateid> 
    <city>umr</city> 
    <city>kat</city> 
    <city>jpl</city> 
    <city>bpl</city>
  </state>
  <state> 
    <stateid>2</stateid> 
    <city>mumbai</city> 
    <city>dadar</city> 
    <city>ghat</city> 
    <city>kanjur</city> 
  </state> 
</states>

1.
umr
凯特
喷气推进实验室
bpl
2.
孟买
达达
加特
坎珠尔
这里1是stateid,其中在该州有像umr.kat、jpl和bpl这样的城市

public static List<statecs> GetStateFromXML(string getstateid)
{ 
   XDocument xmlDoc = XDocument.Load(
           HttpContext.Current.Server.MapPath("stateXML.xml")); 
   var states = from state in xmlDoc.Descendants("state") 
                where state.Element("stateid").Value == getstateid 
                select new statecs { City = state.Element("city").Value, };
   return states.ToList(); 
}
公共静态列表GetStateFromXML(字符串getstateid)
{ 
XDocument xmlDoc=XDocument.Load(
HttpContext.Current.Server.MapPath(“stateXML.xml”);
var states=来自xmlDoc.substands中的状态(“状态”)
其中state.Element(“stateid”).Value==getstateid
选择newstatecs{City=state.Element(“City”).Value,};
返回状态。ToList();
}

这可能有效…未经测试或编译

    // fetch states first
    var states = from state in xmlDoc.Descendants("state")
      where state.Element("stateid").Value == getstateid
      select state;

    // for found states select the city.
    var cities = from city in states.Descendants("city")
                  select new statecs { City = city.Value, };    

    return cities.ToList();

您可以使用SelectMany:

return xmlDoc.Descendants("state")
    .Where(state => state.Element("stateid").Value == getstateid)
    .SelectMany(state => state.Elements("city").Select(city => new statecs { City = city.Value }))
    .ToList();

为什么不将
stateid
作为
state
的一个属性?